ResourceDictionary を分割して使う

ResourceDictionary でリソースを書けるのはいいけど,
MainView では使わないけど Sub1View と Sub2View では使うものがあったりすると困る.
それにひとつの ResourceDictionary だとリソースが増えていくとやたら長くなって可読性も悪い.

というわけで ResourceDictionary を分割する方法です.
細かいネタだけど,カスタムコントロールを作るときの基本でもあるので
ここにメモしておく.

例えば色に関するリソースを Color.xaml として次のように定義する.

SolidColorBrush を 3 つ定義しているだけです.
このリソースを使いながら Border コントロールに関するリソースを Border.xaml として次のように定義する.

ここでもう出てきてしまいましたが,
ResourceDictionary.MergedDictionaries というのが今回のメインです.
Merged とあるように,複数の ResourceDictionary を結合するときに使います.

これらの ResourceDictionary を使用する MainWindowResource.xaml を次のように定義します.

このように,並べて書くだけで複数の ResourceDictionary を結合できます.
そんなわけで例えばこんな MainWindow.xaml を書きます.

実行結果.
ScreenShot1

Border の上にマウスカーソルを乗せると背景色が変化します.
Border.xaml で定義した動作が反映されています.
ScreenShot2

以上小ネタでした.