Extensión de marcado StaticResource

Actualización: noviembre 2007

Proporciona un valor para cualquier atributo de propiedad XAML buscando una referencia a un recurso ya definido. El comportamiento de búsqueda de ese recurso es análogo a la búsqueda en tiempo de carga, que busca recursos que se cargaron previamente desde el marcado de la página XAML actual, así como desde otros orígenes de la aplicación, y genera ese valor de recurso como el valor de la propiedad de los objetos en tiempo de ejecución.

Uso de atributos XAML

<object property="{StaticResource key}" .../>

Uso de elementos de objeto XAML

<object>
  <object.property>
<StaticResource ResourceKey="key" .../>
  </object.property>
</object>

Valores XAML

key

Clave del recurso solicitado. Esta clave la asigna x:Key (atributo) inicialmente si se ha creado un recurso en el marcado, o bien se proporciona como parámetro key al llamar a ResourceDictionary.Add si el recurso se ha creado mediante código.

Comentarios

Nota importante:

StaticResource no debe intentar realizar una referencia adelantada a un recurso que se define léxicamente en un punto posterior del archivo XAML. Esto no se admite, e incluso si una referencia de este tipo no da lugar a ningún error, el intento de hacerla provocará una reducción del rendimiento en tiempo de carga cuando se busque en las tablas de hash internas que representan un objeto ResourceDictionary. Para obtener los mejores resultados, ajuste la composición de los diccionarios de recursos de modo que se eviten las referencias adelantadas. Si no puede evitar una referencia adelantada, utilice la Extensión de marcado DynamicResource en su lugar.

La propiedad ResourceKey especificada debe corresponder a un recurso existente, identificado con un x:Key (atributo) en algún nivel de la página, la aplicación, los temas de control disponibles y los recursos externos o del sistema. La búsqueda de recursos se produce en ese orden. Para obtener más información sobre el comportamiento de la búsqueda de recursos estáticos y dinámicos, vea Información general sobre recursos.

Una clave de recurso puede ser cualquier cadena definida en Gramática de XamlName. Una clave de recurso también puede ser otros tipos de objeto, como un Type. Una clave Type es fundamental para determinar cómo se pueden aplicar los estilos a los controles mediante temas, a través de una clave de estilo implícita. Para obtener más información, vea Información general sobre la creación de controles.

La manera declarativa alternativa de hacer referencia a un recurso es hacerlo como Extensión de marcado DynamicResource.

La sintaxis de atributo es la que se usa más a menudo con esta extensión de marcado. El token de cadena que se proporciona después de la cadena de identificador StaticResource se asigna como valor de ResourceKey de la clase de extensión StaticResourceExtension subyacente.

StaticResource se puede utilizar en la sintaxis de elementos de objeto. En este caso, es preciso especificar el valor de la propiedad ResourceKey.

StaticResource también se puede utilizar en un uso de atributos detallado que especifica la propiedad ResourceKey como un par propiedad=valor:

<object property="{StaticResource ResourceKey=key}" .../>

El uso detallado suele ser útil para las extensiones que tienen más de una propiedad que se puede configurar, o en aquellos casos en que algunas propiedades son opcionales. Dado que StaticResource tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.

La clase StaticResourceExtension define el control para esta extensión de marcado en la implementación del procesador XAML de WPF.

StaticResource es una extensión de marcado. Las extensiones de marcado se suelen implementar cuando se necesita que los valores de los atributos de escape no sean valores literales o nombres de controladores, y este requisito es de índole más global que limitarse a colocar los convertidores de tipos en determinados tipos o propiedades. Todas las extensiones de marcado de XAML utilizan los caracteres { y } en su sintaxis de atributo, que es la convención que permite que un procesador XAML reconozca que el atributo se debe procesar mediante una extensión de marcado. Para obtener más información, vea Extensiones de marcado y XAML.

Vea también

Conceptos

Aplicar estilos y plantillas

Información general sobre XAML

Extensiones de marcado y XAML

Información general sobre recursos

Recursos y código