Partager via


Extension de balisage ThemeDictionary

Fournit un moyen pour les auteurs de contrôles personnalisés ou les applications qui intègrent des contrôles tiers pour charger des dictionnaires de ressources spécifiques au thème à utiliser dans le style du contrôle.

Utilisation des attributs XAML

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

Utilisation des éléments d’objet XAML

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

Valeurs XAML

Valeur Description
assemblyUri URI (Uniform Resource Identifier) de l’assembly qui contient des informations de thème. En règle générale, il s’agit d’un URI de pack qui fait référence à un assembly dans le package plus grand. Les ressources d’assembly et les URI de pack simplifient les problèmes de déploiement. Pour plus d’informations, consultez Pack URI dans WPF.

Remarques

Cette extension est destinée à remplir une seule valeur de propriété spécifique : une valeur pour ResourceDictionary.Source.

À l’aide de cette extension, vous pouvez spécifier un assembly à ressources unique qui contient certains styles à utiliser uniquement lorsque le thème Windows Aero est appliqué au système de l’utilisateur, d’autres styles uniquement lorsque le thème Luna est actif, et ainsi de suite. À l’aide de cette extension, le contenu d’un dictionnaire de ressources spécifique au contrôle peut être automatiquement invalidé et rechargé pour être spécifique pour un autre thème si nécessaire.

La chaîne assemblyUri (valeur de propriétéAssemblyName) constitue la base d’une convention d’affectation de noms qui identifie le dictionnaire qui s’applique à un thème particulier. La logique ProvideValue pour ThemeDictionary termine la convention en générant un URI (Uniform Resource Identifier) qui pointe vers une variante de dictionnaire de thème spécifique, comme contenu dans un assembly de ressources précompilé. La description de cette convention ou des interactions de thème avec le style de contrôle général et le style de niveau page/application comme concept, n’est pas entièrement abordé ici. Le scénario de base pour l’utilisation de ThemeDictionary consiste à spécifier la propriété Source d’une ResourceDictionary déclarée au niveau de l’application. Lorsque vous fournissez un URI pour l’assembly via une extension ThemeDictionary plutôt que comme URI direct, la logique d’extension fournit une logique d’invalidation qui s’applique chaque fois que le thème système change.

La syntaxe d’attribut est la syntaxe la plus courante utilisée avec cette extension de balisage. Le jeton de chaîne fourni après la chaîne d'identificateur ThemeDictionary est assigné en tant que valeur AssemblyName de la classe d'extension ThemeDictionaryExtension sous-jacente.

ThemeDictionary peut également être utilisé dans la syntaxe de l’élément objet. Dans ce cas, la spécification de la valeur de la propriété AssemblyName est requise.

ThemeDictionary peut également être utilisé dans une utilisation détaillée des attributs qui spécifie la propriété Member sous forme de paire propriété=valeur :

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

L'utilisation détaillée est souvent utile pour les extensions qui possèdent plusieurs propriétés configurables ou lorsque certaines propriétés sont facultatives. Étant donné que ThemeDictionary n’a qu’une seule propriété settable, qui est requise, cette utilisation verbeuse n’est pas typique.

Dans l’implémentation du processeur XAML WPF, la gestion de cette extension de balisage est définie par la classe ThemeDictionaryExtension.

ThemeDictionary est une extension de balisage. Les extensions de balisage sont généralement implémentées lorsqu’il est nécessaire d’échapper les valeurs d’attributs pour qu'elles soient autres que des valeurs littérales ou des noms de gestionnaires, et lorsque le besoin est plus global qu'il ne suffit de simplement placer des convertisseurs de type sur certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d’attribut, c’est-à-dire la convention par laquelle un processeur XAML reconnaît qu’une extension de balisage doit traiter l’attribut. Pour plus d’informations, consultez Extensions de balisage etWPF XAML.

Voir aussi