Partager via


ThemeDictionary, extension de balisage

Offre un moyen aux auteurs de contrôles personnalisés ou aux applications qui intègrent des contrôles tiers de charger des dictionnaires de ressources spécifiques aux thèmes afin de définir le style du contrôle.

Utilisation d'attributs XAML

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

Utilisation des éléments d'objet XAML

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

Valeurs XAML

assemblyUri

uniform resource identifier (URI) de l'assembly qui contient des informations sur les thèmes. Il s'agit généralement d'un URI à en-tête pack qui référence un assembly dans le package plus large. Les ressources d'assembly et les URI à en-tête pack simplifient les problèmes de déploiement. Pour plus d'informations, consultez URI à en-tête pack dans WPF.

Notes

Cette extension est conçue pour remplir une seule valeur de propriété spécifique : une valeur pour ResourceDictionary.Source.

En utilisant cette extension, vous pouvez spécifier un assembly de ressources uniquement contenant des styles à utiliser que lorsque le thème Windows Aero est appliqué au système de l'utilisateur, d'autres styles à utiliser lorsque le thème Luna est actif, etc. Lorsque vous utilisez cette extension, le contenu d'un dictionnaire de ressources spécifique au contrôle peut être automatiquement invalidé et rechargé pour être spécifique à un autre thème si nécessaire.

La chaîne assemblyUri (valeur de propriété AssemblyName) sert de base à une convention d'affectation de noms qui identifie le dictionnaire qui s'applique à un thème particulier. La logique ProvideValue du ThemeDictionary complète la convention en générant un uniform resource identifier (URI) qui pointe sur une variante particulière du dictionnaire de thèmes, contenue dans un assembly de ressources précompilé. La description de cette convention ou des interactions de thème à l'aide du style de contrôle général et du style de niveau page/application en tant que concept n'est pas examinée de manière approfondie dans cette rubrique. Le scénario de base pour l'utilisation du 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 par le biais d'une extension ThemeDictionary plutôt que sous la forme d'un URI direct, la logique d'extension fournit la logique d'invalidation qui s'applique chaque fois que le thème du système change.

La syntaxe d'attribut est la syntaxe la plus couramment 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 d'élément objet. Dans ce cas, la valeur de la propriété AssemblyName doit être spécifiée.

ThemeDictionary peut également être employé dans une utilisation d'attribut en clair qui spécifie la propriété Member en tant que paire propriété=valeur :

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

L'utilisation en clair est souvent utile pour les extensions qui comportent plusieurs propriétés définissables 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 de processeur XAML WPF, la gestion de cette extension de balisage est définie par la classe ThemeDictionaryExtension.

ThemeDictionary est une extension de balisage. Des extensions de balisage sont généralement implémentées pour éviter que les valeurs d'attribut ne soient autre chose que des valeurs littérales ou des noms de gestionnaire et lorsque l'exigence va plus loin que la définition de 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'attributs. Cette convention indique au convertisseur XAML que l'extension de balisage doit traiter l'attribut. Pour plus d'informations, consultez Extensions de balisage et XAML WPF.

Voir aussi

Concepts

Application d'un style et création de modèles

Vue d'ensemble du langage XAML (WPF)

Extensions de balisage et XAML WPF

Fichiers de ressources, de contenu et de données d'une application WPF