ResourceDictionary.ThemeDictionaries Eigenschaft

Definition

Ruft eine Auflistung von zusammengeführten Ressourcenwörterbüchern ab, die speziell für Designszenarien mit Schlüsseln und Zusammenstellungen erstellt werden, z. B. die Bereitstellung 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-Themenwörterbüchern . Jede muss mit x:Key schlüsselt werden.

Beispiele

Dieses Beispiel zeigt ein ThemeDictionaries-Wörterbuch, das Pinselstile für ein Standarddesign definiert, zwei vorhandene "HighContrast*"-Designs, die Benutzerdesignauswahlen für hohen Kontrast zugeordnet sind, und ein benutzerdefiniertes Design mit hohem Kontrast. Das Wörterbuch wird von einer Steuerelementvorlage für ein benutzerdefiniertes Steuerelement verwendet. Dies ist Teil des Beispiels mit hohem 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 Startvorlagen von Microsoft Visual Studio für eine UWP-App mit C++, C# oder Visual Basic enthalten einen ThemeDictionaries-Knoten in der XAML-Datei, der den Startwert MergedDictionaries für eine datei app.xaml darstellt. Alle integrierten Windows-Runtime-Steuerelemente verfügen bereits über Designs mit hohem Kontrast, die an anderer Stelle definiert sind (die native Entsprechung von generic.xaml) oder verwenden Systemdesignressourcen, damit sie auf Designs reagieren können, sodass der Startinhalt einer app-spezifischen ThemeDictionaries-Ressourcengruppe minimal ist. Erst wenn Sie mit der Definition von benutzerdefinierten Steuerelementen oder appspezifischen Designstilen beginnen, werden hier weitere Ressourcendefinitionen angezeigt.

<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 verfügen über zwei primäre Szenarien: Ressourcen für Ihre eigene App und Ressourcen, die das System Ihnen auf Designbasis zur Verfügung stellt. Sie müssen nur Werte für die ThemeDictionaries-Ressourcengruppe festlegen, wenn Sie Ihre eigenen App-Ressourcen in "app.xaml" definieren. Andernfalls beziehen sich die { ThemeResource}-Markuperweiterungsverwendungen , die Sie in XAML-Steuerelementvorlagen und an anderer Stelle verwenden, in der Regel auf die ThemeDictionaries-Systemressourcen, die zu Entwurfszwecken in der Entwurfsdatei generic.xaml angezeigt werden können.

Pinselressourcen sind häufig themenspezifisch. Standardmäßig Windows-Runtime XAML-Steuerelementbenutzeroberfläche definiert viele Pinselressourcen, die für die verschiedenen XAML-Standardsteuerelemente verwendet werden. Diese Ressourcendefinitionen werden als Teil der Entwurfsdatei generic.xaml angezeigt. Die ThemeDictionaries-Systemdefinitionen befinden sich zu einem frühen Zeitpunkt in der Datei, sodass sie lexikalisch vor den {ThemeResource}-Markuperweiterungenliegen, die aus den Standardsteuerelementvorlagen auf sie verweisen. Ihre eigenen Seitendefinitionen und benutzerdefinierten Steuerelementdefinitionen können {ThemeResource}-Markuperweiterungsreferenzen auf die vom System bereitgestellten Designressourcen erstellen. In der Tat wird dies empfohlen, wenn Sie Steuerelemente schreiben, die sich in derselben Benutzeroberfläche wie die Standardsteuerelemente befinden sollen. Die Standardsteuerelemente verwenden die Designressourcen umfassend, und die Verwendung der Designressourcen in Ihren eigenen Steuerelementen kann dazu beitragen, visuelle Übereinstimmungen 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 sind auch Ressourcen ohne Pinsel vorhanden, z. B. Standardmaße und Schriftarteigenschaften.

Designwörterbücher, die Sie für einzelne Apps angeben, sollen nicht die Ressourcendefinition eines gesamten App-Designs bereitstellen. Stattdessen sollten Sie Ihre Seitenbenutzeroberfläche und benutzerdefinierte Steuerelementdefinitionen berücksichtigen, um Systemdesignressourcen wann immer möglich zu verwenden, und app-spezifische Designressourcen nur für einige Wenige Fälle zu verwenden, in denen Sie die Systemstandardwerte außer Kraft setzen möchten. Für die App-Benutzeroberfläche auf Seitenebene benötigen Sie in der Regel nur neue Designressourcen für bestimmte Nicht-Pinselressourcen, die in der Komposition verwendet werden, z. B. Glyphen oder pfadbasierte Grafiken. Die Ressourcen in ThemeDictionaries, die Sie 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 unter Angefordertes Thema oder XAML-Angefordertes Designbeispiel.

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

Bei benutzerdefinierten Steuerelementen sollten Sie auch über ein mit "HighContrast" versehenes Designwörterbuch 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 das Fallback, das das System zum Ermitteln des Designs mit hohem Kontrast verwendet, wenn keine anderen Designressourcen für hohen Kontrast verfügbar sind.

Wenn Sie bei benutzerdefinierten Steuerelementen keine Designs "Hell" und "Dunkel" unterstützen und nur ein Design sowie mindestens ein "HighContrast"-Design unterstützen, können Sie das x:Key-Attribut Ihres Standard Wörterbuchs in "Standard" ändern. "Standard" ist das ResourceDictionary , das verwendet wird, wenn ein ResourceDictionary im angegebenen Design (z. B. "Dunkel") nicht gefunden werden kann.

Für Designs mit hohem Kontrast und Szenarien mit benutzerdefinierten Steuerelementen gibt es neben Systempinselressourcen auch Systemfarbressourcen wie "SystemColorButtonFaceColor", die Sie als Farbwert von SolidColorBrush-Ressourcen zuweisen können. Sie können diese als Werte für Ihr Designwörterbuch "HighContrast" und auch für "Default" verwenden. Wenn die Ressource für jedes der Vom Steuerelement unterstützten Designs vorhanden ist, laden die XAML-Vorlagen die entsprechende Ressource für das design, das aktiv ist.

Gilt für:

Weitere Informationen