XAMLのMetroスタイルアプリでサポートされるテーマ(Windows 8 RP時点)

 Windows Phone 7では、「アクセントカラーのテーマ」と「背景のテーマ」という2つのテーマを持っています。


アクセントカラーまたは背景のテーマの変更 | Windows Phoneのテーマ | アクセントカラーの変更 | Windows Phone 7


 このテーマはシステム側の設定であるため、アプリケーション側で変更することはできません(現在どのテーマが設定されているかを確認することはできます)。


 Windows 8XAMLのMetroスタイルアプリケーションでは、システム側ではなくアプリケーション側でWindows Phone 7でいうところの「背景のテーマ」を持っています。これはApplicationクラスのRequestedThemeプロパティで設定、取得することができます。


Application Class (Windows.UI.Xaml) - UWP app developer | Microsoft Docs


 RequestedThemeプロパティの設定値はDarkとLightの2種類で、規定値はDarkのようです(ちなみに現時点の翻訳だと濃色と淡色と表現されています)。また、このプロパティはアプリケーションの実行時に変更することはできません。App.xamlXAMLで設定するか、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