Compartilhar via


Extensão de sintaxe ThemeDictionary

Fornece uma maneira para autores de controle personalizados ou aplicativos que integram controles de terceiros para carregar dicionários de recursos específicos do tema a serem usados no estilo do controle.

Uso do atributo XAML

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

Uso de elementos de objeto XAML

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

Valores XAML

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

Observações

Essa 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 contenha alguns estilos a serem usados somente quando o tema do Windows Aero for aplicado ao sistema do usuário, outros estilos somente quando o tema Luna estiver ativo e assim por diante. Usando essa extensão, o conteúdo de um dicionário de recursos específico do controle pode ser invalidado automaticamente e recarregado para ser específico para outro tema quando necessário.

A assemblyUri cadeia de caracteres (AssemblyName valor da propriedade) forma a base de uma convenção de nomenclatura que identifica qual dicionário se aplica a um tema específico. A lógica para ProvideValue conclui a convenção ao gerar um identificador uniforme de recursos (URI) que aponta para uma variante específica do dicionário de temas, conforme contido em um assembly de recursos pré-compilado. Descrever essa convenção, ou as interações de tema com o estilo de controle geral e o estilo de nível de página/aplicativo como um conceito, não está totalmente abordado aqui. O cenário básico para o uso de ThemeDictionary é especificar a propriedade Source de ResourceDictionary declarado no nível da aplicação. Quando você fornece um URI para o assembly por meio de uma ThemeDictionary extensão e não como um URI direto, a lógica de extensão fornecerá uma lógica de invalidação que se aplica sempre que o tema do sistema for alterado.

A sintaxe do 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 ThemeDictionaryExtension subjacente.

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

ThemeDictionary também pode ser usado em um atributo detalhado que especifica a propriedade Member como sendo o par propriedade=valor:

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

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

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

ThemeDictionary é uma extensão da marcação. As extensões de marcação normalmente são implementadas quando há um requisito para escapar de valores de atributo que não sejam valores literais ou nomes de manipulador, e o requisito é mais global do que apenas colocar conversores de tipo em determinados tipos ou propriedades. Todas as extensões de marcação no 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 Extensões de marcação e XAML do WPF.

Consulte também