Application.RequestedTheme Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk