XAMLのMetroスタイルアプリでサポートされるテーマ(Windows 8 RP時点)
Windows Phone 7では、「アクセントカラーのテーマ」と「背景のテーマ」という2つのテーマを持っています。
アクセントカラーまたは背景のテーマの変更 | Windows Phoneのテーマ | アクセントカラーの変更 | Windows Phone 7
このテーマはシステム側の設定であるため、アプリケーション側で変更することはできません(現在どのテーマが設定されているかを確認することはできます)。
Windows 8のXAMLのMetroスタイルアプリケーションでは、システム側ではなくアプリケーション側でWindows Phone 7でいうところの「背景のテーマ」を持っています。これはApplicationクラスのRequestedThemeプロパティで設定、取得することができます。
Application Class (Windows.UI.Xaml) - UWP app developer | Microsoft Docs
RequestedThemeプロパティの設定値はDarkとLightの2種類で、規定値はDarkのようです(ちなみに現時点の翻訳だと濃色と淡色と表現されています)。また、このプロパティはアプリケーションの実行時に変更することはできません。App.xamlにXAMLで設定するか、Applicationクラスのコンストラクタで設定する必要があります。
Windows Phone 7の「背景のテーマ」同様、このRequestedThemeプロパティを変更すると以前CP時点で本blogでも紹介したいわゆるテーマリソースの設定値が変更されます。
実際に「C:\Program Files (x86)\Windows Kits\8.0\Include\winrt\xaml\design\themeresources.xaml」を見てみると分かりますが、このテーマによってリソースを切り替えるという仕組みは、一般の開発者でも利用することができます。ResourceDictionaryクラスにThemeDictionariesプロパティが用意されているので、ここにキーをDarkやLightとしてリソースを設定してあげることで、そのテーマが設定されたときに自動的にリソースが適用されます。
ResourceDictionary Class (Windows.UI.Xaml) - UWP app developer | Microsoft Docs
なお、デスクトップの「コントロールパネル\デスクトップのカスタマイズ\個人設定」でハイコントラスト系のテーマを設定した場合、RequestedThemeプロパティの値に関わらずHighContrastというキーのテーマリソースが適用されるようです。テーマリソースのキーの名称としては、今のところ以下の4つを確認しています。
- Default
- Dark
- Light
- HighContrast