tmytのらくがき

個人の日記レベルです

システム定義のブラシリソースを上書きする

XAML Advent Calendarというわけではりませんが、XAMLのおはなし。

Windows ストアアプリのページなどなどを新規作成すると、

<Grid Background="{ThemeResource ApplicationBackgroundBrush}" />

とかかいてます。ここでThemeResourceはテーマカラーLight/Darkによって変化します。 さてこれを上書きしたいので、App.xamlに次の様に書きました。

<Color x:Key="ApplicationBackgroundColor">#FFFFE0E0</Color>
<SolidColorBrush x:Key="ApplicationBackgroundBrush" Color="{StaticResource ApplicationBackgroundColor}" />

しかし、これだと色が変わりません。 テーマカラーを上書きするには先ほどのXAMLをリソースディクショナリとして Themes/Custom.xamlに保存したとして、次の様に書きます。

<Application>
   <Application.Resources>
      <Resources>
         <ResourceDictionary.ThemeDictionaries>
             <ResourceDictionary x:Key="Dark" Source="Themes/Custom.xaml" />
         </ResourceDictionary.ThemeDictionaries>
      </Resources>
   </Application.Resources>
</Application>

x:Keyの部分はRequestedThemeの値に合わせるといい感じです。 こうすることで、システムのテーマカラーを上書きできます。 アプリのカラーセットを自動生成してくれる、colorisとセットでどうぞ。