53 votes

Quelle est la différence entre x:Key et x:Nom de WPF?

Quelle est la différence entre x:Key et x:Nom de WPF?

Pas sûr de ce que la vraie différence est.

50voto

Josh Points 38617

Bien qu'ils soient utilisés à des fins similaires, ils ne sont pas interchangeables. x:la Clé est utilisée pour les éléments qui sont ajoutés en tant que valeurs d'un dictionnaire, le plus souvent pour des styles et des autres ressources qui sont ajoutées à un ResourceDictionary. Lors du réglage de l'x:attribut de Clé, il n'y a effectivement pas de propriété sur l'objet ou la même reliée à une dépendance de la propriété à définir. Il est simplement utilisé par le processeur XAML de savoir ce que la clé à utiliser lors de l'appel de Dictionnaire.Ajouter.

x:le Nom est un peu plus compliqué. Il est utilisé pour appliquer un nom associé à un objet (généralement un objet dérivé de FrameworkElement) dans le champ d'application de certains élément parent. Ce champ est appelé une "portée de nom" et de la façon la plus simple de penser à elle, c'est d'imaginer un UserControl qui contient un <TextBox x:Name="foo" />.

Vous pouvez ensuite mettre plusieurs instances de l'objet UserControl sur une Fenêtre sans le nom de "toto" en collision parce que chaque UserControl a sa propre portée de nom.

Il est intéressant de noter aussi que FrameworkElement définit une propriété de dépendance appelé Nom qui est équivalent à la configuration de x:Name.

L'autre différence est que le concepteur XAML crée membres dans le code-behind pour les éléments qui ont un x:Nom. Ce n'est pas vrai pour les objets ajoutés à un dictionnaire à l'aide de x:Key.

Vous pouvez trouver plus d'informations à ce sujet dans la section des remarques de la documentation MSDN pour le x:Nom de la directive.

22voto

Kishore Kumar Points 8636

x:la Clé est valide uniquement dans le cadre d'un ResourceDictionary élément. x:la Clé est utilisé comme identificateur principal pour les éléments dans le ResourceDictionary.

D'autre part, x:le Nom est valide dans le champ d'application de tout, mais un ResourceDictionary. x:Clé n'est pas valide à l'extérieur de la ResourceDictionary portée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X