Partilhar via


Extensão de Marcações do Dicionário de Temas

Fornece aos autores de controlos personalizados ou a aplicativos que integram controlos de terceiros uma forma de carregar dicionários de recursos específicos do tema para aplicar na estilização do controlo.

Uso de atributos XAML

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

Uso do elemento de objeto XAML

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

Valores XAML

Valor Descrição
assemblyUri O identificador de recurso uniforme (URI) da assemblagem que contém informações sobre o tema. Normalmente, este é um URI de pacote que faz referência a um assembly no pacote maior. Recursos de montagem e URIs de pacote simplificam os problemas de implantação. Para obter mais informações, consulte URIs do Pack no WPF.

Comentários

Esta extensão destina-se a preencher apenas um valor de propriedade específico: um valor para ResourceDictionary.Source.

Usando essa extensão, você pode especificar um único assembly somente de recursos que contém alguns estilos para usar somente quando o tema Windows Aero é aplicado ao sistema do usuário, outros estilos somente quando o tema Luna está ativo e assim por diante. Usando essa extensão, o conteúdo de um dicionário de recursos específicos de controle pode ser automaticamente invalidado e recarregado para ser específico para outro tema quando necessário.

A sequência assemblyUri (valor da propriedadeAssemblyName) constitui a base de uma convenção de nomenclatura que determina qual dicionário é aplicável a um tema específico. A lógica ProvideValue para ThemeDictionary completa a convenção gerando um identificador de recurso uniforme (URI) que aponta para uma variante específica do dicionário de temas, conforme contido em um assembly de recursos pré-compilado. A descrição dessa convenção, ou das interações do tema com a estilização geral de controles e estilização ao nível da página/aplicação, como conceito, não é totalmente abordada aqui. O cenário básico para usar ThemeDictionary é especificar a propriedade Source de um ResourceDictionary declarado no nível do aplicativo. Quando se fornece um URI para o assembly através de uma extensão ThemeDictionary, em vez de um URI direto, a lógica da extensão fornecerá uma lógica de invalidação que se aplica sempre que o tema do sistema for alterado.

A sintaxe de atributo é a sintaxe mais comum usada com essa extensão de marcação. O token de cadeia de caracteres fornecido após a string identificadora ThemeDictionary é atribuído como valor AssemblyName da classe de extensão subjacente ThemeDictionaryExtension.

ThemeDictionary também pode ser usado na sintaxe do elemento objeto. Nesse caso, é necessário especificar o valor da propriedade AssemblyName.

ThemeDictionary também pode ser usado num uso detalhado de atributos que especifica o atributo Member como um par propriedade=valor:

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

O uso detalhado geralmente é útil para extensões que têm mais de uma propriedade configurável, ou se algumas propriedades são opcionais. Como ThemeDictionary tem apenas uma propriedade configurável, que é necessária, esse uso verboso não é típico.

Na implementação do processador WPF XAML, a manipulação para essa extensão de marcação é definida pela classe ThemeDictionaryExtension.

ThemeDictionary é uma extensão de marcação. As extensões de marcação geralmente são implementadas quando há um requisito para escapar de valores de atributos diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que apenas colocar conversores de tipo em determinados tipos ou propriedades. Todas as extensões de marcação em XAML usam os caracteres { e } em sua sintaxe de atributo, que é a convenção pela qual um processador XAML reconhece que uma extensão de marcação deve processar o atributo. Para obter mais informações, consulte Markup Extensions e WPF XAML.

Ver também