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 Descriptif
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 URIs 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 assemblyUri chaîne (AssemblyName valeur de propriété) constitue la base d’une convention de nommage qui identifie le dictionnaire applicable à un thème particulier. La logique pour ProvideValue complète la convention en générant un URI (Identificateur de Ressource Uniforme) qui pointe vers une variante de dictionnaire de thème spécifique, comme il se trouve au sein d'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 utiliser ThemeDictionary consiste à spécifier la propriété Source d’un ResourceDictionary déclaré au niveau de l’application. Lorsque vous fournissez un URI pour l’assembly via une ThemeDictionary extension 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é comme valeur AssemblyName de la classe d'extension ThemeDictionaryExtension sous-jacente.

ThemeDictionary peut également être utilisé dans la syntaxe des éléments d’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 verbeuse d'attributs qui spécifie la propriété Member en tant que paire property=value :

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

L’utilisation verbale est souvent utile pour les extensions qui ont plusieurs propriétés configurables, ou si certaines propriétés sont facultatives. ThemeDictionary ne comportant qu'une seule propriété définissable (obligatoire), cette utilisation en clair n'est pas classique.

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'empêcher que les valeurs d'attributs ne soient uniquement des valeurs littérales ou des noms de gestionnaires, et lorsque cette exigence est plus générale que de simplement installer 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 les extensions de balisage et le XAML WPF.

Voir aussi