Partilhar via


Extensão de Marcação 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.

Observações

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 o identificador ThemeDictionary é atribuído como o 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 de atributo verboso que especifica a propriedade Member como 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 dessas propriedades são opcionais. Como o ThemeDictionary tem apenas uma propriedade ajustá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 linguagem de marcação. As extensões de marcação são geralmente implementadas quando há um requisito para evitar que os valores de atributos sejam diferentes dos valores literais ou nomes de funções manipuladoras, e o requisito é mais abrangente do que simplesmente colocar conversores de tipo em certos 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