x:Key, attribut

Mise à jour : novembre 2007

Attribut qui identifie de manière unique les éléments créés et référencés en tant que ressources et qui existent dans un ResourceDictionary.

Utilisation des attributs XAML

<object.Resources>
  <object x:Key="stringKeyValue".../>
</object.Resources>

Valeurs XAML

stringKeyValue

Chaîne réelle utilisée comme clé qui doit se conformer à la grammaire XamlName (voir XamlName, grammaire).

- ou -

Extension de balisage qui fournit un autre type d'objet qui sert de clé. Voir Notes.

Notes

Les éléments enfants d'un élément parent correspondant à une implémentation IDictionary telle que ResourceDictionary doivent généralement inclure un attribut x:Key qui spécifie une valeur de clé unique dans ce dictionnaire. Un Style avec un TargetType ou un DataTemplate avec un DataType constituent des exceptions, car ils disposent déjà chacun d'une clé implicite. L'unicité de la clé est appliquée au moment du chargement par l'implémentation du processeur WPFXAML. Les valeurs x:Key manquantes et/ou non uniques entraînent des erreurs au moment du chargement.

La valeur d'attribut de x:Key peut correspondre à n'importe quelle chaîne définie dans la grammaire XamlName (voir XamlName, grammaire) ou à un objet évalué à l'aide d'une extension de balisage. Par exemple, la valeur de x:Key peut être un ComponentResourceKey. Ce scénario est utilisé lorsque certains contrôles exposent une clé de style pouvant être utilisée pour créer une ressource de style personnalisée qui influence l'apparence de ce contrôle sans remplacer totalement le style. ButtonStyleKey constitue un exemple d'une clé de ce type.

Dans la syntaxe affichée, l'objet ResourceDictionary est implicite dans la façon dont le processeur XAML produit une collection pour remplir une collection Resources. Il n'est généralement pas fourni de manière explicite en tant qu'élément dans le balisage, bien qu'il puisse l'être à des fins de clarté (il s'agirait alors d'un élément objet de collection entre l'élément de propriété Resources et les éléments qu'il contient qui remplissent le dictionnaire). Pour savoir pourquoi un objet de collection est un élément implicite dans le balisage, consultez Terminologie de la syntaxe XAML.

Dans l'implémentation du processeur XAMLWPF, la gestion de cette extension de balisage est définie par la classe abstraite ResourceKey. Toutefois, le processeur XAMLWPF produit différents types d'extension sous-jacents pour les clés en fonction de leur utilisation. Par exemple, la clé d'un DataTemplate ou de classes dérivées est gérée séparément et produit un objet DataTemplateKey distinct.

Les clés et les noms ne sont pas des concepts identiques. En réalité, ils s'excluent mutuellement par la définition WPF de ces concepts. Pour plus d'informations, consultez Portées de nom WPF.

Le code équivalent à la spécification du x:Key est la clé utilisée pour une opération qui utilise une clé avec le IDictionary sous-jacent. Par exemple, un x:Key appliqué dans le balisage pour une ressource est équivalent à la valeur du paramètre key de ResourceDictionary.Add lorsque vous ajoutez la ressource à un ResourceDictionary. (x:Key est une fonctionnalité du langage XAML et n'est pas prévu exclusivement pour ResourceDictionary, même s'il s'agit de l'application la plus fréquente de x:Key dans l'implémentation XAMLWPF).

Voir aussi

Concepts

Vue d'ensemble des ressources

Ressources et code

Référence

StaticResource, extension de balisage