Sprache

ResourceDictionary.ThemeDictionaries Eigenschaft

Definition

Ruft eine Auflistung zusammengeführter Ressourcenwörterbücher ab, die speziell für Designszenarien mit Schlüssel und zusammengesetzt sind, z. B. das Bereitstellen von Designwerten für "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>

Eigenschaftswert

IMap<Object,Object>

IDictionary<Object,Object>

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

IMap<IInspectable,IInspectable>

Ein Wörterbuch von ResourceDictionary-Designwörterbüchern . Jeder muss mit x:Key versehen werden.

Beispiele

Dieses Beispiel zeigt ein ThemeDictionaries Wörterbuch, das Pinselstile für ein "Standarddesign" definiert, zwei vorhandene "HighContrast*"-Designs, die Benutzerdesignoptionen für hohen Kontrast und ein benutzerdefiniertes Design mit hohem Kontrast zuordnen. Das Wörterbuch wird von einer Steuerelementvorlage für ein benutzerdefiniertes Steuerelement verwendet. Dies ist Teil des Beispiels für hohen Kontrast.

<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> 

Die Start-Microsoft Visual Studio-Vorlagen für eine Windows App SDK-App mit C++ oder C# enthalten einen ThemeDictionaries Knoten in der XAML-Datei, die den Startwert "MergedDictionaries" für eine App.xaml-Datei darstellt. Alle integrierten Windows-Runtime-Steuerelemente verfügen bereits über Designs mit hohem Kontrast, die an anderer Stelle definiert sind (die systemeigene Entsprechung von generic.xaml), oder verwenden Systemdesignressourcen, damit sie auf Designs reagieren können, sodass der Startinhalt eines app-spezifischen ThemeDictionaries Ressourcensatzes minimal ist. Sie beginnen nur, benutzerdefinierte Steuerelemente oder appspezifische Designstile zu definieren, die hier weitere Ressourcendefinitionen sehen.

<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>

Hinweise

Designwörterbücher weisen zwei primäre Szenarien auf: Ressourcen für Ihre eigene App und Ressourcen, die das System für Sie pro Design bereitstellt. Sie müssen nur Werte für den ThemeDictionaries Ressourcensatz festlegen, wenn Sie Ihre eigenen App-Ressourcen in "app.xaml" definieren. Andernfalls beziehen sich die Verwendungen der {ThemeResource}-Markuperweiterungen , die Sie in XAML-Steuerelementvorlagen und an anderer Stelle verwenden, in der Regel auf die Systemressourcen ThemeDictionaries , die für Entwurfszwecke in der Entwurfsdatei generic.xaml angezeigt werden können.

Pinselressourcen sind häufig designspezifisch. Standardmäßige Windows-Runtime XAML-Steuerelement-UI definiert viele Pinselressourcen, die für die verschiedenen Standard-XAML-Steuerelemente verwendet werden. Sie können diese Ressourcendefinitionen als Teil der Entwurfsdatei "generic.xaml" anzeigen. Die Systemdefinitionen ThemeDictionaries befinden sich frühzeitig in der Datei, sodass sie lexikalisch von den {ThemeResource}-Markuperweiterungenweitergeleitet werden, die in den Standardsteuerelementvorlagen darauf verweisen. Eigene Seitendefinitionen und benutzerdefinierte Steuerelementdefinitionen können {ThemeResource}-Markuperweiterungsreferenzen auf die vom System bereitgestellten Designressourcen erstellen. In der Tat ist dies eine empfohlene Methode, wenn Sie Steuerelemente schreiben, die sich in derselben Benutzeroberfläche wie die Standardsteuerelemente befinden sollen. Die Standardsteuerelemente verwenden die Designressourcen umfassend, und die Designressourcen in Ihren eigenen Steuerelementen können dazu beitragen, visuelle Konflikte zu verhindern, wenn der Benutzer das Design zur Laufzeit ändert oder wenn die App unter einem Design ausgeführt wird, für das Sie nicht speziell entworfen haben.

In den Systemdesignressourcen in "generic.xaml" gibt es auch Ressourcen ohne Pinsel, z. B. Standardmaße und Schriftarteigenschaften.

Designwörterbücher, die Sie für einzelne Apps angeben, sind nicht für die Bereitstellung der Ressourcendefinition eines gesamten App-Designs vorgesehen. Stattdessen sollten Sie die Benutzeroberfläche der Seite und benutzerdefinierte Steuerelementdefinitionen so berücksichtigen, dass Systemdesignressourcen wann immer möglich verwendet werden, und um appspezifische Designressourcen nur für ein paar Fälle zu verwenden, in denen Sie die Systemstandardwerte außer Kraft setzen möchten. Bei der Benutzeroberfläche auf Seitenebene benötigen Sie in der Regel nur neue Designressourcen für bestimmte Ressourcen, die nicht vom Pinsel in Kompositionen verwendet werden, z. B. Glyphen oder pfadbasierte Grafiken. Die Ressourcen, in ThemeDictionaries denen Sie sich selbst definieren, sind für Szenarien wie Barrierefreiheit vorgesehen. Insbesondere können unterschiedliche Ressourcen für Designs mit hohem Kontrast benötigt werden. Weitere Informationen zum Szenario mit hohem Kontrast finden Sie unter Designs mit hohem Kontrast. Weitere Informationen zu vom System bereitgestellten Designs finden Sie im angeforderten Designbeispiel "RequestedTheme " oder "XAML".

Die erwarteten Schlüssel für die grundlegenden Designs sind "Hell" und "Dunkel".

Bei benutzerdefinierten Steuerelementen sollten Sie auch über ein Designwörterbuch mit Schlüssel "HighContrast" verfügen, wenn Sie Designwörterbücher für "Hell" und "Dunkel" haben. Es gibt andere benannte Designs mit hohem Kontrast, aber der Designschlüssel "HighContrast" ist der Fallback, den das System zum Suchen des Designs mit hohem Kontrast verwendet, wenn keine anderen Designressourcen für hohen Kontrast verfügbar sind.

Wenn Sie für benutzerdefinierte Steuerelemente keine Designs "Light" und "Dark" unterstützen und nur ein Design sowie mindestens ein "HighContrast"-Design unterstützen, können Sie das x:Key-Attribut Ihres Hauptwörterbuchs in "Standard" ändern. "Default" ist das ResourceDictionary , das verwendet wird, wenn ein ResourceDictionary im angegebenen Design (z. B. "Dunkel") nicht gefunden werden kann.

Bei Designs mit hohem Kontrast und benutzerdefinierten Steuerelementszenarien gibt es zusätzlich zu Systempinselressourcen auch Systemfarbressourcen wie "SystemColorButtonFaceColor", die Sie dem Farbwert von SolidColorBrush-Ressourcen zuweisen können. Sie können diese als Werte für Ihr Designwörterbuch "HighContrast" und auch "Default" verwenden. Wenn die Ressource für jedes der Designs vorhanden ist, die Ihr Steuerelement unterstützt, laden die XAML-Vorlagen die entsprechende Ressource für das aktive Design.

Gilt für:

Weitere Informationen