ResourceDictionary.ThemeDictionaries Propriété

Définition

Obtient une collection de dictionnaires de ressources fusionnés spécifiquement clés et composés pour répondre à des scénarios de thème, par exemple en fournissant des valeurs de thème pour « HighContrast ».

public:
 property IMap<Platform::Object ^, Platform::Object ^> ^ ThemeDictionaries { IMap<Platform::Object ^, Platform::Object ^> ^ get(); };
IMap<IInspectable, IInspectable const&> ThemeDictionaries();
public IDictionary<object,object> ThemeDictionaries { get; }
var iMap = resourceDictionary.themeDictionaries;
Public ReadOnly Property ThemeDictionaries As IDictionary(Of Object, Object)
<ResourceDictionary>
  <ResourceDictionary.ThemeDictionaries>
    oneOrMoreThemeDictionaries
  </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

Valeur de propriété

IMap<Object,Object>

IDictionary<Object,Object>

IMap<Platform::Object,Platform::Object>

IMap<IInspectable,IInspectable>

Dictionnaire des dictionnaires de thèmes ResourceDictionary . Chacune d’elles doit être clé avec x:Key.

Exemples

Cet exemple montre un dictionnaire qui définit des ThemeDictionaries styles de pinceau pour un thème « Par défaut », deux thèmes « HighContrast* » existants qui mappent aux choix de thèmes utilisateur pour un contraste élevé et un thème à contraste élevé personnalisé. Le dictionnaire est utilisé par un modèle de contrôle pour un contrôle personnalisé. Cela fait partie de l’exemple Contraste élevé.

<ResourceDictionary>
  <ResourceDictionary.ThemeDictionaries> 
    <ResourceDictionary x:Key="Default"> 
      <SolidColorBrush x:Key="TargetBackground" Color="Red"/> 
      <SolidColorBrush x:Key="TargetBorderBrush" Color="Black"/> 
      <SolidColorBrush x:Key="Circle4Fill" Color="Blue"/> 
      <SolidColorBrush x:Key="Circle3Fill" Color="Green"/> 
      <SolidColorBrush x:Key="Circle2Fill" Color="Yellow"/> 
      <SolidColorBrush x:Key="Circle1Fill" Color="White"/> 
      <SolidColorBrush x:Key="CircleStroke" Color="Black"/> 
    </ResourceDictionary> 
    <ResourceDictionary x:Key="HighContrastBlack"> 
       <SolidColorBrush x:Key="TargetBackground" Color="Black"/> 
       <SolidColorBrush x:Key="TargetBorderBrush" Color="White"/> 
       <SolidColorBrush x:Key="Circle4Fill" Color="Black"/> 
       <SolidColorBrush x:Key="Circle3Fill" Color="Black"/> 
       <SolidColorBrush x:Key="Circle2Fill" Color="Black"/> 
       <SolidColorBrush x:Key="Circle1Fill" Color="Black"/> 
       <SolidColorBrush x:Key="CircleStroke" Color="White"/> 
     </ResourceDictionary> 
     <ResourceDictionary x:Key="HighContrastWhite"> 
       <SolidColorBrush x:Key="TargetBackground" Color="White"/> 
       <SolidColorBrush x:Key="TargetBorderBrush" Color="Black"/> 
       <SolidColorBrush x:Key="Circle4Fill" Color="White"/> 
       <SolidColorBrush x:Key="Circle3Fill" Color="White"/> 
       <SolidColorBrush x:Key="Circle2Fill" Color="White"/> 
       <SolidColorBrush x:Key="Circle1Fill" Color="White"/> 
       <SolidColorBrush x:Key="CircleStroke" Color="Black"/> 
    </ResourceDictionary> 
    <ResourceDictionary x:Key="HighContrastCustom"> 
      <SolidColorBrush x:Key="TargetBackground" Color="{StaticResource SystemColorButtonFaceColor}"/> 
      <SolidColorBrush x:Key="TargetBorderBrush" Color="{StaticResource SystemColorButtonTextColor}"/> 
      <SolidColorBrush x:Key="Circle4Fill" Color="{StaticResource SystemColorHotlightColor}"/> 
      <SolidColorBrush x:Key="Circle3Fill" Color="{StaticResource SystemColorHotlightColor}"/> 
      <SolidColorBrush x:Key="Circle2Fill" Color="{StaticResource SystemColorHotlightColor}"/> 
      <SolidColorBrush x:Key="Circle1Fill" Color="{StaticResource SystemColorHotlightColor}"/> 
      <SolidColorBrush x:Key="CircleStroke" Color="{StaticResource SystemColorHighlightTextColor}"/> 
    </ResourceDictionary> 
  </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary> 

Les modèles Microsoft Visual Studio de démarrage pour une application SDK d'application Windows en C++ ou C# incluent un ThemeDictionaries nœud dans le fichier XAML qui est la valeur de démarrage MergedDictionaries pour un fichier app.xaml. Tous les contrôles Windows Runtime intégrés ont déjà des thèmes à contraste élevé définis ailleurs (l’équivalent natif de generic.xaml) ou utilisent des ressources de thème système afin qu’ils puissent répondre aux thèmes, de sorte que le contenu de départ d’un ensemble de ressources spécifique ThemeDictionaries à l’application est minimal. Ce n’est qu’une fois que vous commencez à définir des contrôles personnalisés ou des styles de thème spécifiques à l’application que vous verrez d’autres définitions de ressources ici.

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- Non-brush values that vary across themes -->

    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <x:String x:Key="BackButtonGlyph">&#xE071;</x:String>
            <x:String x:Key="BackButtonSnappedGlyph">&#xE0BA;</x:String>
        </ResourceDictionary>

        <ResourceDictionary x:Key="HighContrast">
            <x:String x:Key="BackButtonGlyph">&#xE0A6;</x:String>
            <x:String x:Key="BackButtonSnappedGlyph">&#xE0C4;</x:String>
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
...
</ResourceDictionary>

Remarques

Les dictionnaires de thèmes ont deux scénarios principaux : les ressources pour votre propre application et les ressources que le système fournit pour vous sur une base par thème. Vous devrez uniquement définir des valeurs pour l’ensemble ThemeDictionaries de ressources si vous définissez vos propres ressources d’application dans app.xaml. Sinon, les utilisations de l’extension de balisage {ThemeResource} dans les modèles de contrôle XAML et ailleurs font généralement référence aux ressources système ThemeDictionaries , qui peuvent être affichées à des fins de conception dans le fichier de conception generic.xaml.

Les ressources brush sont souvent spécifiques au thème. L’interface utilisateur du contrôle XAML par défaut Windows Runtime définit de nombreuses ressources brush utilisées pour les différents contrôles XAML par défaut. Vous pouvez voir ces définitions de ressources dans le fichier de conception generic.xaml. Les définitions système ThemeDictionaries se trouvent au début du fichier, de sorte qu’elles sont lexicalement en avant des extensions de balisage {ThemeResource}qui les référencent à partir des modèles de contrôle par défaut. Vos propres définitions de page et définitions de contrôle personnalisées peuvent faire des références d’extension de balisage {ThemeResource} aux ressources de thème fournies par le système. En fait, c’est une pratique recommandée si vous écrivez des contrôles destinés à se trouver dans la même interface utilisateur que les contrôles par défaut. Les contrôles par défaut utilisent largement les ressources de thème, et l’utilisation des ressources de thème dans vos propres contrôles peut vous aider à éviter les incompatibilités visuelles si l’utilisateur modifie le thème au moment de l’exécution ou si l’application s’exécute sous un thème pour lequel vous n’avez pas spécifiquement conçu.

Il existe également des ressources non brush dans les ressources de thème système dans generic.xaml, telles que les mesures par défaut et les propriétés de police.

Les dictionnaires de thèmes que vous spécifiez pour des applications individuelles ne sont pas destinés à fournir la définition de ressource d’un thème d’application entier. Au lieu de cela, vous devez prendre en compte l’interface utilisateur de votre page et les définitions de contrôle personnalisé pour utiliser les ressources de thème système chaque fois que possible, et pour utiliser des ressources de thème spécifiques à l’application pour seulement quelques cas où vous souhaitez remplacer les valeurs par défaut du système. Pour l’interface utilisateur de l’application au niveau de la page, vous avez généralement uniquement besoin de nouvelles ressources de thème pour certaines ressources autres que le pinceau utilisées dans la composition, telles que les glyphes ou les graphiques basés sur le chemin d’accès. Les ressources dans ThemeDictionaries lesquelles vous vous définissez vous-même sont destinées à des scénarios tels que l’accessibilité. En particulier, différentes ressources peuvent être nécessaires pour les thèmes à contraste élevé. Pour plus d’informations sur le scénario de contraste élevé, consultez Thèmes à contraste élevé. Pour plus d’informations sur les thèmes fournis par le système, consultez RequestedTheme ou Exemple de thème demandé XAML.

Les clés attendues pour les thèmes de base sont « Light » et « Dark ».

Pour les contrôles personnalisés, vous devez également disposer d’un dictionnaire de thèmes à clé « HighContrast » chaque fois que vous avez des dictionnaires de thèmes pour « Light » et « Dark ». Il existe d’autres thèmes à contraste élevé nommés, mais la clé de thème « HighContrast » est le secours que le système utilise pour rechercher le thème à contraste élevé si aucune autre ressource de thème pour un contraste élevé n’est disponible.

Pour les contrôles personnalisés, si vous ne prenez pas en charge les thèmes « Clair » et « Sombre » et que vous ne prenez en charge qu’un seul thème ainsi qu’au moins un thème « HighContrast », vous pouvez modifier l’attribut x:Key de votre dictionnaire main par « Default ». « Default » est le ResourceDictionary qui sera utilisé si un ResourceDictionary dans le thème spécifié (par exemple, « Sombre ») est introuvable.

Pour les thèmes à contraste élevé et les scénarios de contrôle personnalisés, en plus des ressources de pinceau système, il existe également des ressources de couleur système telles que « SystemColorButtonFaceColor » que vous pouvez affecter à la valeur Color des ressources SolidColorBrush . Vous pouvez les utiliser comme valeurs pour votre dictionnaire de thème « HighContrast » et également comme « Default ». Si la ressource existe pour chacun des thèmes pris en charge par votre contrôle, les modèles XAML chargent la ressource appropriée pour le thème actif.

S’applique à

Voir aussi