次の方法で共有


Application.RequestedTheme プロパティ

定義

アプリのテーマ全体の明るい暗い設定を決定する値を取得または設定します。

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 しようとすると、例外がスローされます (NotSupportedException Microsoft .NET コードの場合)。 アプリ UI の一部であるテーマを選択するオプションをユーザーに提供する場合は、アプリのデータに設定を保存し、アプリの再起動時に適用する必要があります。 (アプリ設定の詳細については、「設定 とその他のアプリ データを格納および取得する」を参照してください)。

FrameworkElement.RequestedTheme プロパティを使用し、UI 内の特定の要素に値を設定すると、実行時に適用後Application.RequestedThemeに特定のテーマ値を変更できます。

システム値を使用する "HighContrast" テーマもありますが、アプリとアプリ コードでは、アプリをハイ コントラストに切り替える別の手法が使用されます。 ユーザーがハイ コントラスト モードで実行している場合、プロパティは RequestedTheme 無視されます。 「コントラスト テーマXAML ハイ コントラストのサンプル」を参照してください。

アプリは実行時にテーマを切り替えることはできませんが、ユーザーは切り替えることができます。 たとえば、Alt + Shift + PrtScn キー ショートカットを使用して、アプリの実行中にハイ コントラスト テーマを有効にできます。 この場合、XAML リソース システムは {ThemeResource} マークアップ拡張機能 の使用状況のリソース値を再計算します。 色やブラシなどのテーマに適したリソースでは、最初にそのテーマを要求したアプリではなくても、現在のテーマに適した値が使用されます。

テーマ固有のリソースは、通常、XAML の別のリソース ディクショナリで定義されます。 このリソース ディクショナリは、コントロール テンプレートに使用されるプライマリ ResourceDictionaryThemeDictionaries プロパティから取得されます。

適用対象

こちらもご覧ください