Application.RequestedTheme プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アプリのテーマ全体の明るい暗い設定を決定する値を取得または設定します。
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" .../>
プロパティ値
列挙体の値。 初期値は、ユーザーがWindows設定で設定した既定のテーマです。
例
この例では、要求されたテーマをローカル アプリ設定に保存し、アプリの再起動時に取得して適用する方法を示します。
注意事項
この簡略化された例は、 ApplicationTheme 列挙値と一致するラジオ ボタン オプションの順序によって異なります:0 = Light、1 = Dark。 別の順序で配置する場合、またはラジオ ボタン以外の UI を使用する場合は、それに応じてコードを変更する必要があります。
<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;
}
}
}
注釈
テーマには、"Light" と "Dark" の 2 つが組み込まれています。 既定では、Windows設定でユーザーが設定したテーマを使用してアプリが実行されます ([設定] > [個人用設定] > [色] >既定のアプリ モードを選択します)。 アプリの RequestedTheme プロパティを設定して、ユーザーの既定値をオーバーライドし、使用するテーマを指定できます。 ユーザーがアプリの明るいテーマまたは濃色のテーマを選択できるようにする UI を提供する場合は、既定の設定 (つまり、個人用設定で選択されているオプション) を使用して戻すオプションWindows提供する必要があります。
テーマは、アプリの起動時にのみ設定でき、実行中には設定できません。 アプリの実行中にRequestedThemeを設定しようとすると、例外がスローされます (コードMicrosoft .NETNotSupportedException)。 アプリ UI の一部であるテーマを選択するオプションをユーザーに提供する場合は、アプリ データに設定を保存し、アプリの再起動時に適用する必要があります。 (アプリ設定の詳細については、「設定 とその他のアプリ データの保存と取得」を参照してください)。
FrameworkElement.RequestedTheme プロパティを使用し、UI 内の特定の要素に値を設定すると、Application.RequestedThemeが適用された後、実行時に特定のテーマの値を変更できます。
システム値を使用する "HighContrast" テーマもありますが、アプリとアプリ コードでは、アプリをハイ コントラストに切り替えるために別の手法が使用されます。 ユーザーがハイ コントラスト モードで実行している場合、 RequestedTheme プロパティは無視されます。
コントラスト テーマと XAML ハイ コントラストのサンプルを参照してください。
アプリは実行時にテーマを切り替えることはできませんが、ユーザーは切り替えることができます。 たとえば、ユーザーは、Alt + Shift + PrtScn キーショートカットを使用して、アプリの実行中にハイ コントラスト テーマを有効にすることができます。 この場合、XAML リソース システムは {ThemeResource} マークアップ拡張 の使用に関するリソース値を再計算します。 色やブラシなどのテーマに適したリソースでは、最初にそのテーマを要求したアプリではなくても、現在のテーマに適した値が使用されます。
テーマ固有のリソースは、通常、XAML の別のリソース ディクショナリで定義されます。 このリソース ディクショナリは、コントロール テンプレートに使用されるプライマリ ResourceDictionary の ThemeDictionaries プロパティから取得されます。