Share via


Application.RequestedTheme Properti

Definisi

Mendapatkan atau menetapkan nilai yang menentukan preferensi gelap terang untuk tema keseluruhan aplikasi.

public:
 property ApplicationTheme RequestedTheme { ApplicationTheme get(); void set(ApplicationTheme value); };
ApplicationTheme RequestedTheme();

void RequestedTheme(ApplicationTheme value);
public ApplicationTheme RequestedTheme { get; set; }
var applicationTheme = application.requestedTheme;
application.requestedTheme = applicationTheme;
Public Property RequestedTheme As ApplicationTheme
<Application RequestedTheme="applicationThemeMemberName" .../>

Nilai Properti

Nilai enumerasi. Nilai awal adalah tema default yang ditetapkan oleh pengguna di pengaturan Windows.

Contoh

Contoh ini menunjukkan cara menyimpan tema yang diminta di pengaturan aplikasi lokal, lalu mengambil dan menerapkannya saat aplikasi dimulai ulang.

Perhatian

Contoh yang disederhanakan ini tergantung pada urutan opsi tombol radio yang cocok dengan ApplicationTheme nilai enumerasi: 0 = Terang, 1 = Gelap. Jika Anda ingin menempatkannya dalam urutan yang berbeda, atau menggunakan UI selain tombol radio, Anda harus memodifikasi kode yang sesuai.

<RadioButtons Header="App theme"
              SelectionChanged="AppTheme_SelectionChanged"
              Loaded="RadioButtons_Loaded">
    <x:String>Light</x:String>
    <x:String>Dark</x:String>
    <x:String>Use system setting</x:String>
</RadioButtons>
private void AppTheme_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Save theme choice to LocalSettings. 
        // ApplicationTheme enum values: 0 = Light, 1 = Dark
        ApplicationData.Current.LocalSettings.Values["themeSetting"] = rb.SelectedIndex;
    }
}

private void RadioButtons_Loaded(object sender, RoutedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Set the RadioButtons selection to the saved value.
        rb.SelectedIndex = (int)ApplicationData.Current.LocalSettings.Values["themeSetting"];
    }
}

App.xaml.cs

public App()
{
    this.InitializeComponent();

    // Get theme choice from LocalSettings.
    object value = ApplicationData.Current.LocalSettings.Values["themeSetting"];

    if (value != null)
    {
        // Apply theme choice if saved value is Light or Dark.
        // Otherwise, don't set it and the Windows Personalization setting is used. 
        if ((int)value == 0 || (int)value == 1)
        {
            App.Current.RequestedTheme = (ApplicationTheme)(int)value;
        }
    }
}

Keterangan

Ada dua tema bawaan: "Terang" dan "Gelap". Secara default aplikasi Anda berjalan menggunakan tema yang diatur oleh pengguna di pengaturan Windows (Pengaturan > Personalisasi > Warna > Pilih mode aplikasi default Anda). Anda dapat mengatur properti aplikasi RequestedTheme untuk mengambil alih default pengguna dan menentukan tema mana yang digunakan. Jika Anda menyediakan UI untuk memungkinkan pengguna memilih tema terang atau gelap untuk aplikasi, Anda juga harus menyediakan opsi untuk beralih kembali menggunakan default, yaitu opsi yang dipilih di pengaturan Personalisasi Windows.

Tema hanya dapat diatur saat aplikasi dimulai, bukan saat sedang berjalan. Mencoba mengatur RequestedTheme saat aplikasi sedang berjalan memberikan pengecualian (NotSupportedException untuk kode Microsoft .NET). Jika Anda memberi pengguna opsi untuk memilih tema yang merupakan bagian dari UI aplikasi, Anda harus menyimpan pengaturan dalam data aplikasi dan menerapkannya saat aplikasi dimulai ulang. (Untuk informasi selengkapnya tentang pengaturan aplikasi, lihat Menyimpan dan mengambil pengaturan dan data aplikasi lainnya).

Anda dapat mengubah nilai tema tertentu pada run-time setelah Application.RequestedTheme diterapkan, jika Anda menggunakan properti FrameworkElement.RequestedTheme dan mengatur nilai pada elemen tertentu di UI.

Ada juga tema "HighContrast" yang menggunakan nilai sistem, tetapi aplikasi dan kode aplikasi menggunakan teknik yang berbeda untuk mengalihkan aplikasi ke kontras tinggi. Properti RequestedTheme diabaikan jika pengguna berjalan dalam mode kontras tinggi. Lihat Tema kontras dan sampel kontras tinggi XAML.

Meskipun aplikasi tidak dapat mengalihkan tema pada run-time, pengguna dapat. Misalnya, pengguna mungkin mengaktifkan tema kontras tinggi saat aplikasi Anda berjalan, dengan menggunakan pintasan kunci Alt+Shift+PrtScn. Jika ini terjadi, sistem sumber daya XAML akan menghitung ulang nilai sumber daya untuk penggunaan ekstensi markup {ThemeResource} apa pun. Sumber daya tema yang sesuai seperti warna dan kuas kemudian menggunakan nilai yang sesuai untuk tema saat ini, meskipun bukan aplikasi yang meminta tema tersebut pada awalnya.

Sumber daya yang spesifik tema biasanya didefinisikan dalam kamus sumber daya terpisah di XAML. Kamus sumber daya ini berasal dari properti ThemeDictionaries dari ResourceDictionary utama yang digunakan untuk templat kontrol.

Berlaku untuk

Lihat juga