x:Key-Attributx:Key attribute

Dient zum eindeutigen Identifizieren von Elementen, die als Ressourcen erstellt und referenziert werden und innerhalb eines ResourceDictionary-Elements vorhanden sind.Uniquely identifies elements that are created and referenced as resources, and which exist within a ResourceDictionary.

XAML-AttributsyntaxXAML attribute usage

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

XAML-Attributverwendung (implizites ResourceDictionary)XAML attribute usage (implicit ResourceDictionary)

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

XAML-WerteXAML values

BegriffTerm BESCHREIBUNGDescription
Objekt (object)object Beliebige Objekte, die freigegeben werden können.Any object that is shareable. Weitere Informationen finden Sie unter ResourceDictionary- und XAML-Ressourcenverweise.See ResourceDictionary and XAML resource references.
stringKeyValuestringKeyValue Eine als Schlüssel verwendete echte Zeichenfolge, die der XamlName-Grammatik entsprechen muss.A true string used as a key, which must conform to the XamlName> grammar. Weitere Informationen erhalten Sie in "XamlName-Grammatik" unten.See "XamlName grammar" below.  

XamlName-GrammatikXamlName grammar

Im Anschluss finden Sie die maßgebende Grammatik für eine Zeichenfolge, die in der UWP-XAML-Implementierung (Universelle Windows-Plattform) als Schlüssel verwendet wird:The following is the normative grammar for a string that is used as a key in the Universal Windows Platform (UWP) XAML implementation:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Zeichen sind auf den unteren ASCII-Bereich beschränkt, genauer gesagt auf römische Alphabet groß-und Kleinbuchstaben, Ziffern und Unterstriche ( _ ).Characters are restricted to the lower ASCII range, and more specifically to Roman alphabet uppercase and lowercase letters, digits, and the underscore (_) character.
  • Der Unicode-Zeichenbereich wird nicht unterstützt.The Unicode character range is not supported.
  • Ein Name darf nicht mit einer Ziffer beginnen.A name cannot begin with a digit.

BemerkungenRemarks

Zu den untergeordneten Elementen eines ResourceDictionary-Elements gehört im Allgemeinen ein x:Key-Attribut zum Angeben eines eindeutigen Schlüsselwerts innerhalb des Wörterbuchs.Child elements of a ResourceDictionary generally include an x:Key attribute that specifies a unique key value within that dictionary. Die Eindeutigkeit von Schlüsseln wird beim Laden durch den XAML-Prozessor erzwungen.Key uniqueness is enforced at load time by the XAML processor. Nicht eindeutige x:Key-Werte haben XAML-Analyseausnahmen zur Folge.Non-unique x:Key values will result in XAML parse exceptions. Auf Anforderung der {StaticResource}-Markuperweiterung haben auch nicht aufgelöste Schlüssel XAML-Analyseausnahmen zur Folge.If requested by {StaticResource} markup extension, a non-resolved key will also result in XAML parse exceptions.

x:Key und x:Name sind nicht identisch.x:Key and x:Name are not identical concepts. x:Key wird ausschließlich in Ressourcenwörterbüchern verwendet.x:Key is used exclusively in resource dictionaries. x:Name wird in allen XAML-Bereichen verwendet.x:Name is used for all areas of XAML. Durch einen FindName-Aufruf mit einem Schlüsselwert wird keine Ressource mit Schlüssel abgerufen.A FindName call using a key value will not retrieve a keyed resource. Objekte, die in einem Ressourcenwörterbuch definiert sind, verfügen über x: Key oder x: Name oder über beide.Objects defined in a resource dictionary may have an x:Key, an x:Name or both. „Key“ und „Name“ müssen nicht übereinstimmen.The key and name are not required to match.

Beachten Sie, dass das ResourceDictionary-Objekt in der gezeigten impliziten Syntax dahingehend implizit ist, wie der XAML-Prozessor ein neues Objekt erzeugt, um eine Resources-Sammlung aufzufüllen.Note that in the implicit syntax shown, the ResourceDictionary object is implicit in how the XAML processor produces a new object to populate a Resources collection.

Der Code zum Angeben von x:Key entspricht einem beliebigen Vorgang, in dem ein Schlüssel mit dem zugrunde liegenden ResourceDictionary verwendet wird.The code equivalent of specifying x:Key is any operation that uses a key with the underlying ResourceDictionary. So entspricht beispielsweise ein im Markup für eine Ressource angewendeter x:Key dem Wert des key-Parameters Insert, wenn Sie die Ressource einem ResourceDictionary hinzufügen.For example, an x:Key applied in markup for a resource is equivalent to the value of the key parameter of Insert when you add the resource to a ResourceDictionary.

Ein Element in einem Ressourcenwörterbuch kann einen Wert für x:Key auslassen, wenn es sich um ein zielgerichtetes Style- oder ControlTemplate-Element handelt. In all diesen Fällen ist der implizite Schlüssel des Ressourcenelements der als Zeichenfolge interpretierte TargetType-Wert.An item in a resource dictionary can omit a value for x:Key if it is a targeted Style or ControlTemplate; in each of these cases the implicit key of the resource item is the TargetType value interpreted as a string. Weitere Informationen finden Sie unter Schnellstart: Formatieren von Steuerelementen und ResourceDictionary- und XAML-Ressourcenverweise.For more info, see Quickstart: styling controls and ResourceDictionary and XAML resource references.