Extensión de marcado StaticResource

Proporciona un valor para cualquier atributo de propiedad XAML mediante el examen de 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 buscará los recursos que se han cargado previamente desde el marcado de la página XAML actual, así como otros orígenes de la aplicación, y generará el valor de ese recurso como valor de propiedad en 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

Value Descripción
key Clave del recurso solicitado. Inicialmente, la directiva x:Key asignaba esta clave si se creaba un recurso en el marcado, o bien se proporcionaba como parámetro key al llamar a ResourceDictionary.Add si el recurso se creaba en el código.

Comentarios

Importante

Un objeto StaticResource no debe intentar hacer referencia a un recurso que se define léxicamente dentro del archivo XAML. No se permite hacerlo, e incluso si no se produce un error en esa referencia, al intentar la referencia adelantada se producirá una penalización del rendimiento del tiempo de carga cuando se busquen las tablas hash internas que representan un objeto ResourceDictionary. Para obtener los mejores resultados, ajuste la composición de los diccionarios de recursos de manera que se puedan evitar las referencias adelantadas. Si no puede evitar una referencia adelantada, use la extensión de marcado DynamicResource en su lugar.

El objeto ResourceKey especificado debe corresponder a un recurso existente, identificado por una directiva x:Key en algún nivel de la página, la aplicación, los temas de control y los recursos externos disponibles, o los recursos del sistema. La búsqueda de recursos se produce en ese orden. Para más información sobre el comportamiento de búsqueda de recursos para recursos estáticos y dinámicos, vea Recursos XAML.

Una clave de recurso puede ser cualquier cadena que se defina con la gramática XamlName. Una clave de recurso también puede ser de otro tipo de objeto, como Type. Una clave Type es fundamental para la forma de aplicar estilos a los controles por temas, mediante una clave de estilo implícita. Para obtener más información, consulte Información general sobre la creación de controles.

El medio declarativo alternativo para hacer referencia a un recurso es como una extensión de marcado DynamicResource.

La sintaxis de atributo es la que se usa normalmente 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 usar en la sintaxis de elementos de objeto. En este caso, es necesario especificar el valor de la propiedad ResourceKey.

StaticResource también se puede utilizar en el uso de atributos detallado que especifica la propiedad ResourceKey como un par de 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 de XAML reconozca que el atributo se debe procesar mediante una extensión de marcado. Para más información, vea Extensiones de marcado y XAML de WPF.

Consulte también