はじめに
はじめまして、現在仕事でWPFを使用した開発を行っているdaitenと申します。
本記事は、仕事にて学んだことを備忘録的な感じで書いていきますので、何か誤りがありましたらご指摘頂けますと幸いです。
また今後も新たに学んだ部分は記事を修正、追加などしていく予定です。
スタイルの共通化とは
Xamlによって記述されたコントロールはそのプロパティの値を変更することによってデザインや挙動などを変更することができる。
そのプロパティの値を複数のコントロールで共有するために値のリソースを別の場所に定義し、そこの値を参照することで共通化を行うことができる。
StaticResourceを使用した共通化
静的(Static)なリソースでアプリの実行時のリソースは常に固定される
例えば以下のようにWindowのリソース内にButtonを対象とするButton_RedというKey名のリソースを配置し、ButtonからはStyleプロパティにStaticResourceで参照させています。
このようにすることで複数のButtonで、共通の背景色を設定することができます。
共通化項目の設定方法
共通化したいプロパティの設定方法はSetterとValueを使用して設定を行います。
まずSetterで共通化したいプロパティを指定し、Valueで値を設定します。
ネストしたスタイルの共通化方法
Styleの内部でStyle.Resourceを定義することで、共通化を行うことができます。
以下の例はStackPanelに配置したButtonの背景色を赤にするよう共通化を行ったものです。
手順としてはまずWindow.Resource内にStackPanelのスタイルのリソースを定義し、その内部でStyle.Resourceを定義することでStackPanel内に指定したコントロールを配置した場合(今回の場合はButton)にスタイルが適用されます。
参考