it-swarm-eu.dev

Quelle est la différence entre x: Key et x: Name dans WPF?

Quelle est la différence entre x:Key et x:Name dans WPF?

Je ne sais pas quelle est la vraie différence.

53
LB.

Bien qu'ils soient utilisés à des fins similaires, ils ne sont pas interchangeables. x: Key est utilisé pour les éléments ajoutés en tant que valeurs à un dictionnaire, le plus souvent pour les styles et autres ressources ajoutés à ResourceDictionary. Lors de la définition de l'attribut x: Key, il n'y a en fait aucune propriété correspondante sur l'objet ou même une propriété de dépendance attachée en cours de définition. Il est simplement utilisé par le processeur XAML pour savoir quelle clé utiliser lors de l'appel de Dictionary.Add.

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 cadre d'un élément parent. Cette étendue est appelée "étendue de nom" et la façon la plus simple d'y penser est d'imaginer un UserControl qui contient un <TextBox x:Name="foo" />.

Vous pouvez ensuite placer plusieurs instances de UserControl dans une fenêtre sans que le nom "foo" ne se heurte car chaque UserControl a sa propre étendue de noms.

Il convient également de noter que FrameworkElement définit une propriété de dépendance appelée Name qui équivaut à définir x: Name.

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

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

50
Josh

x: Key n'est valide que dans la portée d'un élément ResourceDictionary. x: Key est utilisé comme identifiant principal pour les éléments du ResourceDictionary.

D'un autre côté, x: Name est valide dans le cadre de tout sauf un ResourceDictionary. x: la clé n'est pas valide en dehors de la portée ResourceDictionary.

21
Kishore Kumar