Compartilhar via


Extensão de marcação ThemeDictionary

Fornece uma forma para que autores de controles personalizados ou aplicativos que integram controles de terceiros carreguem dicionários de recursos específicos do tema, que serão usados na estilização do controle.

Uso do atributo XAML

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

Uso de Elemento de Objeto XAML

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

Valores XAML

Valor Descrição
assemblyUri O identificador uniforme de recursos (URI) do assembly que contém informações sobre o tema. Normalmente, esse é um URI de pacote que faz referência a um assembly no pacote maior. Recursos de assembly e URIs de pacote simplificam problemas de implantação. Para obter mais informações, consulte Pack URIs 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 string assemblyUri (valor da propriedadeAssemblyName) forma a base da convenção de nomenclatura que identifica qual dicionário se aplica a um determinado tema. A lógica ProvideValue para ThemeDictionary conclui a convenção ao gerar um URI (Identificador Uniforme de Recursos) que aponta para uma variante específica de dicionário de temas, conforme contido em um assembly de recursos pré-compilado. Descrever essa convenção ou interações de tema com estilo de controle geral e estilo de nível de página/aplicativo como um conceito não é totalmente abordado aqui. O cenário básico para usar ThemeDictionary é 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 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. A sequência de caracteres fornecida após o identificador ThemeDictionary é atribuída 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 uso detalhado de atributo que especifica a propriedade Member como um par property=value:

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

O uso verboso 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, a qual é obrigatória, essa verbosidade não é típica.

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 de 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 as extensões de marcação e o XAML do WPF.

Consulte também