Windows 8のプロジェクトで以下のような記載を見ることがあります。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
リソースとして「ApplicationPageBackgroundThemeBrush」が指定されています。
別のシーンではプロパティウィンドウで以下のような表示を見ることができます。
これらのテーマを選ぶことでブラシを変更することができます。
では、これらのテーマはどこに定義されているでしょう。
C:\Program Files (x86)\Windows Kits\8.0\Include\winrt\xaml\design\themeresources.xaml
上記ファイルに定義されています。
<SolidColorBrush x:Key="ComboBoxItemDisabledForegroundThemeBrush" Color="#66000000" />
<SolidColorBrush x:Key="ComboBoxItemPointerOverBackgroundThemeBrush" Color="#21000000" />
<SolidColorBrush x:Key="ComboBoxItemPointerOverForegroundThemeBrush" Color="#FF000000" />
<SolidColorBrush x:Key="ComboBoxItemPressedBackgroundThemeBrush" Color="#FFD3D3D3" />
<SolidColorBrush x:Key="ComboBoxItemPressedForegroundThemeBrush" Color="#FF000000" />
<SolidColorBrush x:Key="ComboBoxItemSelectedBackgroundThemeBrush" Color="#FF4617B4" />
<SolidColorBrush x:Key="ComboBoxItemSelectedDisabledBackgroundThemeBrush" Color="#8C000000" />
<SolidColorBrush x:Key="ComboBoxItemSelectedDisabledForegroundThemeBrush" Color="#99FFFFFF" />
<SolidColorBrush x:Key="ComboBoxItemSelectedForegroundThemeBrush" Color="White" />
このような定義がたくさん記述されています。
自分で定義したリソースを使いたい
リソースはXAML版定数のようなものです。
(テンプレートなどはその域を超えていますが)
もちろん自分でプロジェクトに合わせた色テーマを定義することも可能です。
テーマの定義をApp.xamlに定義するとすべてのページで利用できます。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
プラットフォームの外観の共通の要素を定義するスタイル
Visual Studio プロジェクトおよびアイテム テンプレートで必要です
-->
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="hogeThema" Color="#66970000" />
</ResourceDictionary>
</Application.Resources>
hogeThemaというテーマを指定しました。
プロパティウィンドウには以下のように表示されます。
ローカルBrushリソースとしてhogeThemaが表示されています。
リソースを上手に利用すると定義の共有や、XAMLコードの可読性が上がることになりますので上手に使いましょう。
Please give us your valuable comment