Atributo x:Key

Identifica exclusivamente los elementos que se crean y a los cuales se hace referencia como recursos, y que existen dentro de un ResourceDictionary.

Uso del atributo XAML

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

Uso del atributo XAML (ResourceDictionary implícito)

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

Valores de XAML

Término Descripción
object Cualquier objeto que se pueda compartir. Consulta Referencias a ResourceDictionary y a recursos XAML.
stringKeyValue Cadena verdadera que se usa como clave, que debe ajustarse a la gramática xamlName> . Consulta "Gramática XamlName", a continuación.

Gramática XamlName

A continuación se muestra la gramática normativa de una cadena que se usa como clave en la implementación de XAML en la Plataforma universal de Windows (UWP):

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Los caracteres están restringidos al intervalo ASCII inferior y, más específicamente, a las letras mayúsculas y minúsculas del alfabeto romano, los dígitos y el carácter de subrayado (_).
  • No se admite el intervalo de caracteres Unicode.
  • Un nombre no puede comenzar por un dígito.

Comentarios

Los elementos secundarios de un ResourceDictionary generalmente incluyen un atributo x:Key que especifica un valor de clave único dentro de ese diccionario. El procesador XAML hace cumplir la exclusividad de la clave en tiempo de carga. Los valores x:Key que no son únicos generarán errores o excepciones en el analizador. Si la extensión de marcado {StaticResource} lo solicita, una clave no resuelta también generará excepciones de análisis XAML.

x:Key y x:Name no son conceptos idénticos. x:Key se usa exclusivamente en los diccionarios de recursos. x:Name se usa para todas las áreas de XAML. Una llamada a FindName mediante el valor de clave no recuperará un recurso con clave. Es posible que los objetos definidos en un diccionario de recursos tengan el elemento x:Key, x:Name o ambos. No es necesario que la clave y el nombre coincidan.

Ten en cuenta que, en la sintaxis implícita que se muestra, el objeto ResourceDictionary está implícito en la forma en que el procesador XAML produce un objeto nuevo para rellenar una colección Resources.

El código que equivale a especificar x:Key es cualquier operación que use una clave con el ResourceDictionary subyacente. Por ejemplo, un x:Key aplicado en el marcado para un recurso es equivalente al valor del parámetro key de Insert cuando se agrega un recurso a un ResourceDictionary.

Un elemento de un diccionario de recursos puede pasar por alto un valor de x:Key si se trata de un Style o un ControlTemplate dirigido; en cualquiera de estos casos, la clave implícita del elemento de recurso es el valor de TargetType interpretado como una cadena. Para obtener más información, consulta Inicio rápido: controles de estilo y Referencias a ResourceDictionary y a los recursos XAML.