Share via


Extensión de marcado DynamicResource

Actualización: noviembre 2007

Proporciona un valor para cualquier atributo de propiedad XAML difiriendo ese valor de modo que sea una referencia a un recurso definido. El comportamiento de búsqueda de ese recurso es análogo a la búsqueda en tiempo de ejecución.

Uso de atributos XAML

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

Uso de elementos de propiedad XAML

<object>
  <object.property>
    <DynamicResource 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

Un DynamicResource creará una expresión temporal durante la compilación inicial y, de este modo, diferirá la consulta de recursos hasta que el valor de recurso solicitado se necesite realmente para construir un objeto. Potencialmente, esto puede suceder una vez cargada la página XAML. El valor de recurso se buscará mediante la búsqueda de clave en todos los diccionarios de recursos activos empezando por el ámbito de la página actual, y reemplazará la expresión utilizada como marcador de posición en la compilación.

Nota importante:

Por lo que se refiere a la prioridad de las propiedades de dependencia, una expresión DynamicResource es equivalente a la posición donde se aplica la referencia dinámica al recurso. Si establece un valor local para una propiedad que previamente tenía una expresión DynamicResource como su valor local, DynamicResource se quita totalmente. Para obtener información más detallada, vea Prioridad de los valores de propiedades de dependencia.

Algunos escenarios de acceso a recursos son particularmente adecuados para DynamicResource al contrario que una Extensión de marcado StaticResource. Vea Información general sobre recursos para obtener una explicación sobre las ventajas relativas y las implicaciones de rendimiento de DynamicResource y StaticResource.

La propiedad ResourceKey especificada debe corresponder a un recurso existente determinado por x:Key (atributo) en algún nivel de la página, la aplicación, los temas de control disponibles y los recursos externos o recursos del sistema, y la búsqueda de recursos se realizará en ese orden. Para obtener más información sobre 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 el modo de aplicar estilos a los controles mediante temas. Para obtener más información, vea Información general sobre la creación de controles.

Las API para la búsqueda de valores de recursos, como FindResource, siguen la misma lógica de búsqueda de recursos que DynamicResource.

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

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 DynamicResource se asigna como valor de ResourceKey de la clase de extensión DynamicResourceExtension subyacente.

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

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

<object property="{DynamicResource 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 DynamicResource tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.

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

DynamicResource 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

Información general sobre recursos

Recursos y código

Información general sobre XAML

Extensiones de marcado y XAML

Extensiones de marcado y XAML

Referencia

x:Key (atributo)

Extensión de marcado StaticResource