Compartilhar via


ThemeDictionary Markup Extension

Fornece uma maneira para que autores de controles personalizados ou aplicativos que integram controles de terceiros carreguem dicionários de recursos específicos de temas para usar no estilo do controle.

Uso de atributos XAML

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

Uso do elemento Object em XAML

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

Valores de XAML

assemblyUri

O uniform resource identifier (URI) do conjunto de módulos (assembly) que contém informações de tema. Normalmente, este é um URI de pacote que referencia um assembly no pacote maior. URIs de pacotes e recursos de assembly simplificam a implantação. Para obter mais informações, consulte: URIs de Pacotes no Windows Presentation Foundation.

Comentários

Essa extensão tem por objetivo preencher apenas um valor da propriedade específicos: um valor de ResourceDictionary.Source.

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

A string assemblyUri (valor da propriedade AssemblyName) forma a base de uma convenção de nomenclatura que identifica qual dicionário aplica-se a um tema específico. A lógica de ProvideValue para ThemeDictionary conclui a convenção por gerar um uniform resource identifier (URI) que aponta para uma variante específica do dicionário de tema, como contido em um assembly de recursos pré-compilado. A descrição essa convenção, ou interações dos temas com estilos gerais de controle e estilos a nível de página/aplicativo como um conceito, não é abordado completamente aqui. A situação básica para se usar um ThemeDictionary é para especificar a propriedade Source de um ResourceDictionary declarado no nível do aplicativo. Quando você fornece um URI para o assembly por meio de uma extensão ThemeDictionary em vez de usar um URI direto, a lógica da extensão fornecerá lógica de invalidação que aplica-se sempre que o tema do sistema mudar.

Sintaxe de atributo é a sintaxe mais comum usada com esta extensão de marcação. O símbolo-string fornecido após a string identificadora do ThemeDictionary é atribuído como o valor do AssemblyName da classe de extensão ThemeDictionaryExtension subjacente.

ThemeDictionary também pode ser usado em sintaxe de elemento-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 se algumas propriedades são opcionais. Como ThemeDictionary tem apenas uma propriedade configurável, que é necessária, esse uso detalhado não é típico.

Na implementação de processador XAML WPF, o tratamento para esta extensão de marcação é definida pela classe ThemeDictionaryExtension.

ThemeDictionary é uma extensão de marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito de escapar valores de atributo para serem diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que simplesmente colocar conversores de tipo em certos 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 o processador XAML reconhece que uma extensão de markup precisa processar o atributo. Para obter mais informações, consulte Extensão de Marcação e XAML.

Consulte também

Tarefas

Exemplo de aplicativo skinned

Conceitos

Styling and Templating

XAML Overview

Extensão de Marcação e XAML

Arquivos de Recurso, Conteúdo e Dados de Aplicações Windows Presentation Foundation