Compartir a través de


Extensión de marcado ThemeDictionary

Actualización: noviembre 2007

Proporciona a los autores de controles personalizados o a las aplicaciones que integran controles de otros fabricantes una manera de cargar los diccionarios de recursos específicos del tema para utilizarlos en la aplicación de estilos al control.

Uso de atributos XAML

<object property="{ThemeDictionary assemblyUri}" .../>

Uso de elementos de objeto XAML

<object>
  <object.property>
    <ThemeDictionary AssemblyName="assemblyUri"/>
  <object.property>
<object>

Valores XAML

assemblyUri

identificador de recursos uniforme (URI) del ensamblado que contiene información del tema. Normalmente, se trata de un pack URI que hace referencia a un ensamblado en el paquete mayor. Los recursos de ensamblado y los pack URI simplifican los problemas de implementación. Para obtener más información, vea URIs de paquete en Windows Presentation Foundation.

Comentarios

Extensión está pensada para rellenar un solo valor de propiedad concreto: un valor para ResourceDictionary.Source.

Utilizando esta extensión, puede especificar un único ensamblado sólo de recursos que contenga algunos estilos para utilizarlos solamente cuando se aplique el tema Aero de Windows al sistema del usuario, otros estilos cuando esté activo el tema Luna, y así sucesivamente. Utilizando esta extensión, se puede invalidar automáticamente y volver a cargar el contenido de un diccionario de recursos específico del control de modo que sea específico de otro tema cuando se necesite.

La cadena assemblyUri (valor de la propiedad AssemblyName) constituye la base de una convención de nomenclatura que identifica qué diccionario se aplica para un tema concreto. La lógica de ProvideValue para ThemeDictionary completa la convención generando un identificador de recursos uniforme (URI) que señala a una variante concreta del diccionario del tema, contenida dentro de un ensamblado de recursos precompilado. En este artículo no se aborda plenamente la descripción de esta convención ni el concepto de las interacciones de los temas con la aplicación general de estilos, a controles o en el nivel de aplicación o página. El escenario básico para utilizar ThemeDictionary es especificar la propiedad Source de un objeto ResourceDictionary declarado en el nivel de la aplicación. Cuando se proporciona un URI para el ensamblado mediante una extensión de ThemeDictionary en lugar de utilizar un URI directo, la lógica de la extensión proporciona la lógica de invalidación que se aplica cada vez que cambia el tema del sistema.

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 ThemeDictionary se asigna como valor de AssemblyName de la clase de extensión ThemeDictionaryExtension subyacente.

ThemeDictionary también se puede utilizar en la sintaxis de elementos de objeto. En este caso, es preciso especificar el valor de la propiedad AssemblyName.

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

<object property="{ThemeDictionary AssemblyName=assemblyUri}" .../>

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 ThemeDictionary tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.

En la implementación del procesador XAML de WPF, el control para esta extensión de marcado se define mediante la clase ThemeDictionaryExtension.

ThemeDictionary 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

Tareas

Ejemplo Skinned Application

Conceptos

Aplicar estilos y plantillas

Información general sobre XAML

Extensiones de marcado y XAML

Archivos c Windows Presentation Foundation