ThemeDictionary, extension de balisage

Cette extension offre un moyen aux auteurs de contrôles personnalisés ou aux applications qui intègrent des contrôles tiers de charger les dictionnaires de ressources de thème utilisés pour appliquer un style à un contrôle.

Utilisation d'attributs XAML

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

Utilisation d'éléments 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. 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 le déploiement. Pour plus d’informations, consultez URI à en-tête pack dans WPF.

Notes

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. Quand vous utilisez cette extension, le contenu d’un dictionnaire de ressources d’un contrôle peut être automatiquement invalidé et rechargé pour un autre thème spécifique, si nécessaire.

La assemblyUri chaîne (AssemblyName valeur de propriété) constitue la base d’une convention d’affectation de noms qui identifie le dictionnaire qui s’applique à un thème particulier. La ProvideValue logique pour ThemeDictionary terminer la convention en générant un URI (Uniform Resource Identifier) qui pointe vers une variante de dictionnaire de thème spécifique, telle qu’elle se trouve 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 à utiliser ThemeDictionary consiste à spécifier la Source propriété 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 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 de l’élément objet. Dans ce cas, la spécification de la valeur de la AssemblyName propriété est requise.

ThemeDictionary peut également être utilisé dans une utilisation d'attributs 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 du processeur XAML WPF, la gestion de cette extension de balisage est définie par la ThemeDictionaryExtension classe.

ThemeDictionary est une extension de balisage. Les 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 dépasse le cadre de 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’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 et XAML WPF.

Voir aussi