Extensão de Marcações 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. |
Comentários
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 a string identificadora ThemeDictionary
é atribuído como 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 detalhado de atributos que especifica o atributo Member como um 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 propriedades são opcionais. Como ThemeDictionary
tem apenas uma propriedade configurá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 marcação. As extensões de marcação geralmente são implementadas quando há um requisito para escapar de valores de atributos diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que apenas colocar conversores de tipo em determinados 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
.NET Desktop feedback