Atributo x:Key

Identifica de forma única los elementos creados y a los que se hace referencia como recursos, y que existen dentro de resourceDictionary.

Uso del atributo XAML

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

Uso de atributos XAML (ResourceDictionary implícito)

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

Valores de XAML

Término Descripción
objeto Cualquier objeto que se pueda compartir. Consulta Referencias de recursos XAML y ResourceDictionary.
stringKeyValue Cadena verdadera que se usa como clave, que debe ajustarse a la gramática xamlName> . Consulta la 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 XAML de 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 letras mayúsculas y minúsculas del alfabeto romano, dígitos y carácter de subrayado (_).
  • No se admite el intervalo de caracteres Unicode.
  • Un nombre no puede comenzar con un dígito.

Comentarios

Los elementos secundarios de resourceDictionary suelen incluir un atributo x:Key que especifica un valor de clave único dentro de ese diccionario. El procesador XAML aplica la unicidad de clave en tiempo de carga. Los valores x:Key no únicos darán lugar a excepciones de análisis XAML. Si lo solicita la extensión de marcado {StaticResource}, una clave no resuelta también producirá excepciones de análisis XAML.

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

Tenga 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 genera un nuevo objeto para rellenar una colección Resources.

El código equivalente de especificar x:Key es cualquier operación que use una clave con resourceDictionary subyacente. Por ejemplo, una x:Key aplicada en el marcado de un recurso es equivalente al valor del parámetro de clave de Insert al agregar el recurso a resourceDictionary.

Un elemento de un diccionario de recursos puede omitir un valor para x:Key si es un Estilo de destino o ControlTemplate; en cada uno de estos casos, la clave implícita del elemento de recurso es el valor TargetType interpretado como una cadena. Para obtener más información, consulta Inicio rápido: aplicar estilos a los controles y referencias a recursos ResourceDictionary y XAML.