x:Key (atributo)

Actualización: noviembre 2007

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

Uso de atributos XAML

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

Valores XAML

stringKeyValue

Cadena real utilizada como clave, que debe cumplir la Gramática de XamlName.

O bien,

Extensión de marcado que proporciona un tipo de objeto alternativo que actúa como clave. Vea Comentarios.

Comentarios

En general, los elementos secundarios de un elemento primario que es una implementación de IDictionary, como ResourceDictionary, deben incluir un atributo x:Key que especifica un valor de clave única dentro de ese diccionario. Las excepciones son Style con la propiedad TargetType o DataTemplate con la propiedad DataType, ya que ambas tienen su propia clave implícita. La aplicación de esta singularidad de las claves en el momento de la carga corre a cargo de la implementación del procesador XAML de WPF. Los valores de x:Key ausentes o que no sean únicos producirán errores en tiempo de carga.

El valor de atributo de x:Key puede ser cualquier cadena definida en Gramática de XamlName, o bien un objeto evaluado mediante una extensión de marcado. Por ejemplo, el valor de x:Key puede ser ComponentResourceKey. Este escenario se utiliza cuando algunos controles exponen una clave de estilo que se puede utilizar para crear un recurso de estilo personalizado que influye en la apariencia y el funcionamiento de ese control sin reemplazar el estilo completamente. Un ejemplo de este tipo de clave es ButtonStyleKey.

Observe que, en la sintaxis mostrada, el objeto ResourceDictionary está implícito en la manera en que el procesador XAML genera una colección para rellenar una colección Resources, y no se suele proporcionar explícitamente como un elemento en el marcado, aunque se puede hacer si se desea para aportar mayor claridad (sería un elemento de objeto de colección entre el elemento de propiedad Resources y los elementos que contiene incluidos en el diccionario). Para obtener detalles acerca de por qué un objeto de colección constituye un elemento implícito en el marcado, vea Terminología de la sintaxis de XAML.

La clase abstracta ResourceKey define el control para esta extensión de marcado en la implementación del procesador XAML de WPF. Sin embargo, el procesador XAML de WPF genera tipos de extensión subyacentes diferentes para las claves, según su uso. Por ejemplo, la clave de un objeto DataTemplate o sus clases derivadas se administra por separado y genera un objeto DataTemplateKey diferenciado.

Las claves y los nombres no son conceptos idénticos y, en realidad, son mutuamente excluyentes según la definición de WPF de estos conceptos. Para obtener información más detallada, vea Ámbitos de nombres de WPF.

El equivalente en código de especificar x:Key es la clave usada en cualquier operación que utiliza una clave con la interfaz IDictionary subyacente. Por ejemplo, una clave x:Key aplicada en el marcado de un recurso equivale al valor del parámetro key de ResourceDictionary.Add cuando se agrega el recurso a ResourceDictionary. (x:Key es una característica del lenguaje XAML y no está diseñada exclusivamente para ResourceDictionary, aunque ésta es la aplicación más frecuente de x:Key en la implementación de XAML en WPF.)

Vea también

Conceptos

Información general sobre recursos

Recursos y código

Referencia

Extensión de marcado StaticResource