[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]
Uniquely identifies elements that are created and referenced as resources, and which exist within a ResourceDictionary.
XAML attribute usage
<ResourceDictionary> <object x:Key="stringKeyValue".../> </ResourceDictionary>
XAML attribute usage (implicit ResourceDictionary)
<object.Resources> <object x:Key="stringKeyValue".../> </object.Resources>
Any object that is shareable. See ResourceDictionary and XAML resource references.
A true string used as a key, which must conform to the XamlName grammar. See "XamlName grammar" below.
The following is the normative grammar for a string that is used as a key in the Windows Runtime XAML implementation:
XamlName ::= NameStartChar (NameChar)* NameStartChar ::= LetterCharacter | '_' NameChar ::= NameStartChar | DecimalDigit LetterCharacter ::= ('a'-'z') | ('A'–'Z') DecimalDigit ::= '0'-'9' CombiningCharacter::= none
- Characters are restricted to the lower ASCII range, and more specifically to Roman alphabet uppercase and lowercase letters, digits, and the underscore (_) character.
- The Unicode character range is not supported.
- A name cannot begin with a digit.
Child elements of a ResourceDictionary generally include an x:Key attribute that specifies a unique key value within that dictionary. Key uniqueness is enforced at load time by the XAML processor. Non-unique x:Key values will result in XAML parse exceptions. If requested by StaticResource, a non-resolved key will also result in XAML parse exceptions.
x:Key and x:Name are not identical concepts. x:Key is used exclusively in resource dictionaries. x:Name is used for all areas of XAML. A FindName call using a key value will not retrieve a keyed resource.
The code equivalent of specifying x:Key is any operation that uses a key with the underlying ResourceDictionary. 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.
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. For more info, see Quickstart: styling controls and ResourceDictionary and XAML resource references.