次の方法で共有


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 設定で設定した既定のテーマです。

この例では、要求されたテーマをローカル アプリ設定に保存し、アプリの再起動時に取得して適用する方法を示します。

<ToggleSwitch Header="Theme" OnContent="Light" OffContent="Dark"
              Toggled="ToggleSwitch_Toggled" Loaded="ToggleSwitch_Loaded"/>
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
    // Save theme choice to LocalSettings. 
    // ApplicationTheme enum values: 0 = Light, 1 = Dark
    ApplicationData.Current.LocalSettings.Values["themeSetting"] =
                                                     ((ToggleSwitch)sender).IsOn ? 0 : 1;
}

private void ToggleSwitch_Loaded(object sender, RoutedEventArgs e)
{
    ((ToggleSwitch)sender).IsOn = App.Current.RequestedTheme == ApplicationTheme.Light;
}

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.
        App.Current.RequestedTheme = (ApplicationTheme)(int)value;
    }
}

注釈

テーマには、"Light" と "Dark" の 2 つの組み込みがあります。 既定では、アプリは Windows 設定でユーザーが設定したテーマを使用して実行されます ([設定] [個人用設定>の色>] > 既定のアプリ モードを選択します)。 アプリの RequestedTheme プロパティを設定して、ユーザーの既定値をオーバーライドし、使用するテーマを指定できます。

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

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

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

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

テーマ固有のリソースは、通常、XAML の別のリソース ディクショナリで定義されます。 このリソース ディクショナリは、コントロール テンプレートに使用されるプライマリ ResourceDictionaryThemeDictionaries プロパティから取得されます。 テーマ固有のリソースの既定のシステム リソース ディクショナリの名前は ThemeResources.xaml です。 このファイルは、Windows ソフトウェア開発キット (SDK) インストールの (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic フォルダーで入手できます。

以前のバージョンのメモ

Windows 8.x 既定では、アプリは "ダーク" テーマを使用して実行されます (themeresources.xaml ファイルでは、"ダーク" リソースのキー名は "Default" です)。

  • Windows では、RequestedTheme を ElementTheme.Default に設定すると、常に "ダーク" がテーマになります。
  • Windows Phone、ElementTheme.Default 値を使用すると、ユーザーが設定したシステム テーマのクエリが生成されます。

適用対象

こちらもご覧ください