Condividi tramite


ResourceDictionary.ThemeDictionaries Proprietà

Definizione

Ottiene una raccolta di dizionari di risorse uniti che sono specificamente chiave e composti per affrontare gli scenari del tema, ad esempio specificando i valori del tema per "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>

Valore della proprietà

IMap<Object,Object>

IDictionary<Object,Object>

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

IMap<IInspectable,IInspectable>

Dizionario dei dizionari dei temi ResourceDictionary . Ogni chiave deve essere chiaveta con x:Key.

Esempio

In questo esempio viene illustrato un dizionario ThemeDictionary che definisce gli stili del pennello per un tema "Default", due temi "HighContrast*" esistenti che mappano a scelte di tema utente per contrasto elevato e un tema a contrasto elevato personalizzato. Il dizionario viene usato da un modello di controllo per un controllo personalizzato. Questo è parte dell'esempio a contrasto elevato.

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

I modelli di Microsoft Visual Studio iniziali per un'app UWP usando C++, C#o Visual Basic includono un nodo ThemeDictionary nel file XAML che rappresenta il valore mergeDictionary iniziale per un file app.xaml. Tutti i controlli Windows Runtime predefiniti hanno già temi a contrasto elevato definiti altrove (l'equivalente nativo di generic.xaml) o usano risorse tema di sistema in modo che possano rispondere ai temi, quindi il contenuto iniziale di un set di risorse ThemeDictionary specifico dell'app è minimo. È solo una volta che si inizia a definire controlli personalizzati o stili di tema specifici dell'app che verranno visualizzate altre definizioni di risorse qui.

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

Commenti

I dizionari tema hanno due scenari principali: le risorse per l'app e le risorse fornite dal sistema in base al tema. È necessario impostare i valori solo per il set di risorse ThemeDictionary se si definiscono le risorse dell'app personalizzate in app.xaml. In caso contrario, gli usi dell'estensione di markup {ThemeResource} che verranno usati nei modelli di controllo XAML e altrove fanno in genere riferimento alle risorse themeDictionary di sistema, che possono essere visualizzate a scopo di progettazione all'interno del file di progettazione generic.xaml.

Le risorse pennello sono spesso specifiche del tema. L'interfaccia utente del controllo XAML predefinito Windows Runtime definisce molte risorse pennello usate per i vari controlli XAML predefiniti. È possibile visualizzare queste definizioni di risorse come parte del file di progettazione generic.xaml. Le definizioni del tema di sistema si trovano all'inizio del file, in modo che vengano inoltrate in modo lexicalmente dall'estensione di markup {ThemeResource}che li fanno riferimento all'interno dei modelli di controllo predefiniti. Le definizioni di pagina e le definizioni di controllo personalizzate possono creare riferimenti all'estensione di markup {ThemeResource} alle risorse del tema fornite dal sistema. Si tratta infatti di una procedura consigliata se si scrivono controlli destinati a trovarsi nella stessa interfaccia utente dei controlli predefiniti. I controlli predefiniti usano le risorse del tema in modo esteso e l'uso delle risorse del tema nei propri controlli può aiutare a prevenire le mancate corrispondenze visive se l'utente modifica il tema in fase di esecuzione o se l'app è in esecuzione in un tema che non è stato progettato in modo specifico per.

Esistono anche risorse non pennello nelle risorse del tema di sistema in generic.xaml, ad esempio misure predefinite e proprietà del tipo di carattere.

I dizionari tema specificati per le singole app non sono destinati a fornire la definizione della risorsa di un intero tema dell'app. È invece consigliabile tenere conto dell'interfaccia utente della pagina e delle definizioni di controllo personalizzate per usare le risorse del tema di sistema ogni volta che è possibile e usare le risorse del tema specifiche dell'app per pochi casi in cui si desidera eseguire l'override dei valori predefiniti del sistema. Per l'interfaccia utente dell'app a livello di pagina, in genere sono necessarie nuove risorse tema per determinate risorse non pennello usate nella composizione, ad esempio glifi o grafica basata sul percorso. Le risorse in ThemeDictionary definite autonomamente sono destinate a scenari come l'accessibilità. In particolare, potrebbero essere necessarie risorse diverse per temi a contrasto elevato. Per altre informazioni sullo scenario a contrasto elevato, vedere Temi a contrasto elevato. Per altre informazioni sui temi forniti dal sistema, vedere Esempio di tema richiestoTheme o XAML.

Le chiavi previste per i temi di base sono "Luce" e "Scuro".

Per i controlli personalizzati, è necessario avere anche un dizionario tema chiave "HighContrast" ogni volta che si hanno dizionari tema per "Luce" e "Scuro". Esistono altri temi a contrasto elevato, ma la chiave del tema "HighContrast" è il fallback usato dal sistema per trovare il tema a contrasto elevato se non sono disponibili altre risorse tema per il contrasto elevato.

Per i controlli personalizzati, se non si supportano temi "Light" e "Dark" e supportano un solo tema e almeno un tema "HighContrast", è possibile modificare l'attributo x:Key del dizionario principale su "Default". "Default" è resourceDictionary che verrà usato se non è possibile trovare un resourceDictionary nel tema specificato,ad esempio "Scuro".

Per temi a contrasto elevato e scenari di controllo personalizzati, oltre alle risorse del pennello di sistema, sono disponibili anche risorse di colore di sistema, ad esempio "SystemColorButtonFaceColor" che è possibile assegnare per essere il valore Color delle risorse SolidColorBrush . È possibile usare questi valori come valori per il dizionario tema "HighContrast" e anche "Default". Se la risorsa esiste per ognuno dei temi supportati dal controllo, i modelli XAML caricheranno la risorsa appropriata per il tema attivo.

Si applica a

Vedi anche