x:Key, directivex:Key Directive

Identifie de façon unique les éléments qui sont créés et référencés dans un dictionnaire XAML défini.Uniquely identifies elements that are created and referenced in a XAML-defined dictionary. L’ajout d’une x:Key valeur à un élément d’objet XAML est le moyen ResourceDictionaryle plus courant d’identifier une ressource dans un dictionnaire de ressources, par exemple dans un WPF .Adding an x:Key value to a XAML object element is the most common way to identify a resource in a resource dictionary, for example in a WPF ResourceDictionary.

Utilisation d'attributs XAMLXAML Attribute Usage

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

Utilisation d’attributs XAML (spécifique au FMM)XAML Attribute Usage (WPF-specific)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

Valeurs XAMLXAML Values

stringKeyValue Une chaîne de texte à utiliser comme clé.A text string to use as a key. La chaîne de texte doit se conformer à la grammaire XamlName.The text string must conform to the XamlName Grammar.
markupExtensionUsage Dans l’extension de balisage délimite , une utilisation d’extension de balisage {}qui fournit un objet à utiliser comme clé.Within the markup extension delimiters {}, a markup extension usage that provides an object to use as a key. Consultez la section Notes.See Remarks.

NotesRemarks

x:Keyprend en charge le concept de dictionnaire de ressources XAML.x:Key supports the XAML resource dictionary concept. XAML en tant que langue ne définit pas une implémentation de dictionnaire de ressources, qui est laissée à des cadres spécifiques d’interface utilisateur.XAML as a language doesn't define a resource dictionary implementation, that is left to specific UI frameworks. Pour en savoir plus sur la façon dont les dictionnaires de ressources XAML sont mis en œuvre dans WPF, voir XAML Resources.To learn more about how XAML resource dictionaries are implemented in WPF, see XAML Resources.

Dans XAML 2006 et x:Key WPF, doit être fourni comme un attribut.In XAML 2006 and WPF, x:Key must be provided as an attribute. Vous pouvez toujours utiliser des touches noncordantes, mais cela nécessite une utilisation d’extension de balisage afin de fournir la valeur non-corde sous forme d’attribut.You can still use nonstring keys, but this requires a markup extension usage in order to provide the nonstring value in attribute form. Si vous utilisez XAML 2009, x:Key peut être spécifié comme un élément, pour prendre explicitement en charge les dictionnaires clés par des types d’objets autres que les chaînes sans nécessiter une extension de balisage intermédiaire.If you are using XAML 2009, x:Key can be specified as an element, to explicitly support dictionaries keyed by object types other than strings without requiring a markup extension intermediate. Voir la section "XAML 2009" dans ce sujet.See the "XAML 2009" section in this topic. Le reste de la section Remarques s’applique spécifiquement à la mise en œuvre de XAML 2006.The remainder of the Remarks section applies specifically to the XAML 2006 implementation.

La valeur x:Key d’attribut de peut être n’importe quelle chaîne définie dans la grammaire XamlName ou peut être un objet évalué par une extension de balisage.The attribute value of x:Key can be any string defined in the XamlName Grammar or can be an object evaluated through a markup extension. Voir "WPF Usage Notes" par exemple de WPF.See "WPF Usage Notes" for an example from WPF.

Les éléments pour enfants d’un élément parent qui est une IDictionary mise en œuvre doivent généralement inclure un x:Key attribut qui spécifie une valeur clé unique dans ce dictionnaire.Child elements of a parent element that is an IDictionary implementation must typically include an x:Key attribute that specifies a unique key value within that dictionary. Les cadres peuvent mettre en œuvre des propriétés clés alias pour x:Key remplacer certains types; les types qui définissent ces DictionaryKeyPropertyAttributepropriétés doivent être attribués avec .Frameworks might implement aliased key properties to substitute for x:Key on particular types; types that define such properties should be attributed with DictionaryKeyPropertyAttribute.

Le code équivalent x:Key à la spécifier IDictionaryest la clé qui est utilisée pour le sous-jacent .The code equivalent of specifying x:Key is the key that is used for the underlying IDictionary. Par exemple, x:Key un qui est appliqué en marge pour une ressource key dans ResourceDictionary.Add WPF est équivalent à ResourceDictionary la valeur du paramètre de quand vous ajoutez la ressource à un WPF dans le code.For example, an x:Key that is applied in markup for a resource in WPF is equivalent to the value of the key parameter of ResourceDictionary.Add when you add the resource to a WPF ResourceDictionary in code.

Remarques sur l'utilisation de WPFWPF Usage Notes

Les objets pour enfants d’un objet parent qui est une IDictionary implémentation, comme le WPF ResourceDictionary, doivent généralement inclure un x:Key attribut, et la valeur clé doit être unique dans ce dictionnaire.Child objects of a parent object that is an IDictionary implementation, such as the WPF ResourceDictionary, must typically include an x:Key attribute, and the key value must be unique within that dictionary. Il y a deux exceptions notables :There are two notable exceptions:

Dans le modèle global de mise en œuvre et d’application WPF XAML, l’unicité des clés n’est pas vérifiée par le compilateur de balisage XAML.In the overall WPF XAML implementation and application model, key uniqueness is not checked by the XAML markup compiler. Au lieu de cela, les valeurs manquantes ou non ponctuelles x:Key causent des erreurs de parsion XAML à temps de charge.Instead, missing or nonunique x:Key values cause load-time XAML parser errors. Cependant, la manipulation visual Studio des dictionnaires pour WPF peut souvent noter de telles erreurs dans la phase de conception.However, Visual Studio handling of dictionaries for WPF can often note such errors in the design phase.

Notez que dans la ResourceDictionary syntaxe montrée, l’objet est implicite dans la Resources façon dont le processeur WPF XAML produit une collection pour remplir une collection.Note that in the syntax shown, the ResourceDictionary object is implicit in how the WPF XAML processor produces a collection to populate a Resources collection. A ResourceDictionary n’est généralement pas fourni explicitement comme élément de majoration, bien qu’il puisse être Resources dans certains cas si elle est voulue pour la clarté (il s’agirait d’un élément objet de collecte entre l’élément de propriété et les éléments qui peuplent le dictionnaire).A ResourceDictionary is not typically provided explicitly as an element in markup, although it can be in some cases if wanted for clarity (it would be a collection object element between the Resources property element and the items within that populate the dictionary). Pour plus d’informations sur les raisons pour lesquelles un objet de collecte est presque toujours un élément implicite dans la balisage, voir XAML Syntax In Detail.For information about why a collection object is almost always an implicit element in markup, see XAML Syntax In Detail.

Dans la mise en œuvre de WPF XAML, la manipulation des clés de dictionnaire des ressources est définie par la ResourceKey classe abstraite.In the WPF XAML implementation, the handling for resource dictionary keys is defined by the ResourceKey abstract class. Toutefois, le processeur WPF XAML produit différents types d’extension sous-jacent pour les touches en fonction de leurs utilisations.However the WPF XAML processor produces different underlying extension types for keys based on their usages. Par exemple, la DataTemplate clé d’une ou de n’importe DataTemplateKey quelle classe dérivée est manipulée séparément et produit un objet distinct.For example, the key for a DataTemplate or any derived class is handled separately, and produces a distinct DataTemplateKey object.

Les clés et les nomsx:Key utilisent x:Namedifférentes directives et éléments de langage (par rapport) dans la définition de base XAML.Keys and names use different directives and language elements (x:Key versus x:Name) in the basic XAML definition. Les clés et les noms sont également utilisés dans différentes situations par la définition et l’application de ces concepts.Keys and names are also used in different situations by the WPF definition and application of these concepts. Pour plus de détails, voir WPF XAML Namescopes.For details, see WPF XAML Namescopes.

Comme indiqué précédemment, la valeur d’une clé peut être fournie par une extension de balisage et peut être autre qu’une valeur de chaîne.As stated previously, the value of a key can be supplied through a markup extension and can be other than a string value. Un exemple WPF scénario est x:Key que la valeur de peut être un ComponentResourceKey.An example WPF scenario is that the value of x:Key may be a ComponentResourceKey. Certains contrôles exposent une clé de style de ce type pour une ressource de style personnalisé qui influence une partie de l’apparence et le comportement de ce contrôle sans remplacer totalement le style.Certain controls expose a style key of that type for a custom style resource that influences part of the appearance and behavior of that control without totally replacing the style. Un exemple d’une ButtonStyleKeytelle clé est .An example of such a key is ButtonStyleKey.

La fonction de dictionnaire fusionné WPF introduit des considérations supplémentaires pour l’unicité clé et le comportement de recherche clé.The WPF merged dictionary feature introduces additional considerations for key uniqueness and key lookup behavior. Pour plus d’informations, consultez Dictionnaires de ressources fusionnés.For more information, see Merged Resource Dictionaries.

XAML 2009XAML 2009

XAML 2009 assouplit x:Key la restriction qui est toujours fournie sous forme d’attribut.XAML 2009 relaxes the restriction that x:Key always be provided in attribute form.

Dans WPF, vous pouvez utiliser les fonctionnalités XAML 2009, mais uniquement pour XAML qui n’est pas compilée.In WPF, you can use XAML 2009 features, but only for XAML that is not markup-compiled. Le code XAML compilé par balisage pour WPF et la forme BAML du code XAML ne prennent actuellement pas en charge les mots clés et les fonctionnalités XAML 2009.Markup-compiled XAML for WPF and the BAML form of XAML do not currently support the XAML 2009 keywords and features.

Dans le cadre de XAML 2009, vous pouvez spécifier x:Key des éléments grâce à l’utilisation suivante :Under XAML 2009, you can specify x:Key elements through the following usage:

Utilisation d’éléments XAML (XAML 2009 seulement)XAML Element Usage (XAML 2009 only)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

Valeurs XAMLXAML Values

keyObject Élément d’objet pour l’objet qui object est utilisé comme clé pour un donné dans un dictionnaire spécialisé.Object element for the object that is used as the key for a given object in a specialized dictionary.
  • Le conteneur /parent pour ce type d’utilisation n’est pas montré ici.The container/parent for this kind of use is not shown here. objecton s’attend à ce qu’il soit un enfant d’un élément d’objet qui représente une mise en œuvre spécialisée de dictionnaire.object is expected to be a child of an object element that represents a specialized dictionary implementation. keyObjecton s’attend à ce qu’il s’propri été soit une instance d’objet (ou une valeur d’un type de valeur) qui soit appropriée comme clé pour cette mise en œuvre particulière de dictionnaire spécialisé.keyObject is expected to be an object instance (or a value of a value type) that is appropriate as the key for that particular specialized dictionary implementation.

  • WPF ne met pas en œuvre les dictionnaires qui nécessitent cette utilisation.WPF does not implement dictionaries that require this usage. Les touches d’objet sont plus une caractéristique générale de la langue XAML, peut-être utile pour certains scénarios de dictionnaire personnalisé où la création du dictionnaire dans XAML est souhaitable.Object keys is more a general feature of the XAML language, possibly useful for certain custom dictionary scenarios where creating the dictionary in XAML is desirable. Pour les fonctionnalités WPF telles que les styles implicites qui utilisent des touches non-cordes pour les ressources, d’autres techniques pour établir ou spécifier les clés existent, de sorte que l’utilisation d’une clé d’objet n’est pas nécessaire.For WPF features such as implicit styles that use non-string keys for resources, other techniques for establishing or specifying the keys exist, so using an object key is not necessary.

  • keyObjectpourrait également être une utilisation d’extension de balisage sous forme d’élément d’objet, plutôt qu’une instance d’objet direct.keyObject could also be a markup extension usage in object element form, rather than a direct object instance.

Notes d’utilisation SilverlightSilverlight Usage Notes

x:Keypour Silverlight est documenté séparément.x:Key for Silverlight is documented separately. Pour plus d’informations, voir XAML Namespace (x:) Caractéristiques linguistiques (Silverlight).For more information, see XAML Namespace (x:) Language Features (Silverlight).

Voir aussiSee also