Share via


Extensão de marcação ThemeDictionary

Fornece uma maneira para autores de controles personalizados ou aplicativos que integram controles de terceiros de carregar os dicionários de recursos específicos de temas para uso ao aplicar estilo ao controle.

Uso do Atributo XAML

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

Uso de elemento Object do 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 "pack://" que referencia um assembly no pacote maior. Recursos de assembly e URIs "pack://" simplificam os problemas de implantação. Para obter mais informações, consulte URIs "pack://" no WPF.

Comentários

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 contém alguns estilos a serem usados somente quando o tema do 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ífico do controle pode ser invalidado e recarregado automaticamente 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 ProvideValue lógica para conclui a convenção gerando um identificador de recurso uniforme (URI) que aponta para ThemeDictionary uma variante de dicionário de tema específica, conforme contido em um assembly de recurso pré-compilado. A descrição dessa convenção, ou as interações dos temas com estilos gerais de controle e estilos de nível de página/aplicativo como um conceito não é abordado completamente aqui. O cenário básico para usar ThemeDictionary é especificar a Source propriedade de um ResourceDictionary declarado no nível do aplicativo. Quando você fornece um URI para o assembly por meio de uma extensão em vez de como um URI direto, a lógica de ThemeDictionary extensão fornecerá 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 da cadeia de caracteres fornecido após a cadeia de caracteres identificadora ThemeDictionary é atribuído como o valor AssemblyName da classe de extensão subjacente ThemeDictionaryExtension.

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

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, que é necessária, esse uso detalhado não é típico.

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

ThemeDictionary é uma extensão da marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito que permite que valores de atributo sejam 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 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 Extensões de marcação e XAML do WPF.

Confira também