ResourceDictionary.ThemeDictionaries Properti

Definisi

Mendapatkan kumpulan kamus sumber daya yang digabungkan yang secara khusus dikun kunci dan terdiri untuk mengatasi skenario tema, misalnya memasok nilai tema untuk "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>

Nilai Properti

IMap<Object,Object>

IDictionary<Object,Object>

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

IMap<IInspectable,IInspectable>

Kamus kamus kamus tema ResourceDictionary . Masing-masing harus di-key dengan x:Key.

Contoh

Contoh ini menunjukkan kamus ThemeDictionaries yang menentukan gaya kuas untuk tema "Default", dua tema "HighContrast*" yang ada yang memetakan ke pilihan tema pengguna untuk kontras tinggi, dan tema kontras tinggi kustom. Kamus digunakan oleh templat kontrol untuk kontrol kustom. Ini adalah bagian dari sampel Kontras tinggi.

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

Templat Microsoft Visual Studio awal untuk aplikasi UWP menggunakan C++, C#, atau Visual Basic menyertakan simpul ThemeDictionaries dalam file XAML yang merupakan nilai MergedDictionaries awal untuk file app.xaml. Semua kontrol Windows Runtime bawaan sudah memiliki tema kontras tinggi yang ditentukan di tempat lain (setara asli generic.xaml) atau menggunakan sumber daya tema sistem sehingga mereka dapat merespons tema, sehingga konten awal himpunan sumber daya ThemeDictionaries khusus aplikasi minimal. Ini hanya setelah Anda mulai menentukan kontrol kustom atau gaya tema khusus aplikasi yang akan Anda lihat definisi sumber daya lainnya di sini.

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

Keterangan

Kamus tema memiliki dua skenario utama: sumber daya untuk aplikasi Anda sendiri, dan sumber daya yang disediakan sistem untuk Anda berdasarkan per tema. Anda hanya perlu mengatur nilai untuk kumpulan sumber daya ThemeDictionaries jika Anda menentukan sumber daya aplikasi Anda sendiri di app.xaml. Jika tidak, penggunaan ekstensi markup {ThemeResource} yang akan Anda gunakan dalam templat kontrol XAML dan di tempat lain biasanya mengacu pada sumber daya ThemeDictionaries sistem, yang dapat dilihat untuk tujuan desain dalam file desain generic.xaml.

Sumber daya kuas sering kali bersifat spesifik tema. UI kontrol XAML Windows Runtime default mendefinisikan banyak sumber daya kuas yang digunakan untuk berbagai kontrol XAML default. Anda dapat melihat definisi sumber daya ini sebagai bagian dari file desain generic.xaml. Definisi ThemeDictionaries sistem terletak di awal file, sehingga secara leksikal meneruskan ekstensi markup {ThemeResource}yang mereferensikannya dari dalam templat kontrol default. Definisi halaman Anda sendiri dan definisi kontrol kustom dapat membuat referensi ekstensi markup {ThemeResource} ke sumber daya tema yang disediakan sistem. Bahkan itu adalah praktik yang direkomendasikan jika Anda menulis kontrol yang dimaksudkan untuk berada di UI yang sama dengan kontrol default. Kontrol default menggunakan sumber daya tema secara ekstensif, dan menggunakan sumber daya tema dalam kontrol Anda sendiri dapat membantu mencegah ketidakcocokan visual jika pengguna mengubah tema saat runtime, atau jika aplikasi berjalan di bawah tema yang belum Anda rancang secara khusus.

Ada juga sumber daya non-sikat dalam sumber daya tema sistem di generic.xaml, seperti ukuran default dan properti font.

Kamus tema yang Anda tentukan untuk aplikasi individual tidak dimaksudkan untuk menyediakan definisi sumber daya dari seluruh tema aplikasi. Sebagai gantinya, Anda harus memperhitungkan UI halaman dan definisi kontrol kustom untuk menggunakan sumber daya tema sistem jika memungkinkan, dan menggunakan sumber daya tema khusus aplikasi hanya untuk beberapa kasus di mana Anda ingin mengambil alih nilai default sistem. Untuk UI aplikasi tingkat halaman, Anda biasanya hanya memerlukan sumber daya tema baru untuk sumber daya non-sikat tertentu yang digunakan dalam komposisi seperti glyph atau grafik berbasis jalur. Sumber daya dalam Kamus Tema yang Anda tentukan sendiri ditujukan untuk skenario seperti aksesibilitas. Secara khusus, sumber daya yang berbeda mungkin diperlukan untuk tema kontras tinggi. Untuk informasi selengkapnya tentang skenario kontras tinggi, lihat Tema kontras tinggi. Untuk informasi selengkapnya tentang tema yang disediakan sistem, lihat Sampel tema yang diminta RequestedTheme atau XAML.

Kunci yang diharapkan untuk tema dasar adalah "Terang" dan "Gelap".

Untuk kontrol kustom, Anda juga harus memiliki kamus tema bertanda "HighContrast" setiap kali Anda memiliki kamus tema untuk "Terang" dan "Gelap". Ada tema kontras tinggi bernama lain, tetapi kunci tema "HighContrast" adalah fallback yang digunakan sistem untuk menemukan tema kontras tinggi jika tidak ada sumber daya tema lain untuk kontras tinggi yang tersedia.

Untuk kontrol kustom, jika Anda tidak mendukung tema "Terang" dan "Gelap" dan hanya mendukung satu tema serta setidaknya satu tema "HighContrast", Anda dapat mengubah atribut x:Key kamus utama Anda menjadi "Default". "Default" adalah ResourceDictionary yang akan digunakan jika ResourceDictionary dalam tema yang ditentukan (seperti "Gelap") tidak dapat ditemukan.

Untuk tema kontras tinggi dan skenario kontrol kustom, selain sumber daya sikat sistem, ada juga sumber daya warna sistem seperti "SystemColorButtonFaceColor" yang dapat Anda tetapkan untuk menjadi nilai Warna sumber daya SolidColorBrush . Anda dapat menggunakan ini sebagai nilai untuk kamus tema "HighContrast" Anda dan juga "Default". Jika sumber daya ada untuk setiap tema yang didukung kontrol Anda, templat XAML akan memuat sumber daya yang sesuai untuk tema yang aktif.

Berlaku untuk

Lihat juga