スポンサーリンク

【C#】【WPF】リソースとStaticResourceの定義と使い方

VisualStudio C#

StaticResourceとは?

WPFでは複数のUI要素で1つのオブジェクトを共有するための仕組みがあり、それをリソースと呼んでいます。

例えば複数のボタンがあり、それぞれに同じ背景色を設定する場合、背景色の変更のたびに全てのボタンの背景色を再設定していたのでは、手間が増えますし、間違いのもとにもなります。

リソースを定義しておくと、1つの定義を複数のコントロールで共有できるため、変更が生じた場合も1か所を変更するだけですべてのコントロールに反映されます。

StaticResourceとは、定義されたリソースをコントロール等に設定する際に使用します。

リソースの定義の書き方

リソースの定義はWindow.Resourcesで囲って、その中に必要な定義を記述します。
色の定義を行う場合はSolidColorBrushに対して、KeyとColorを設定します。

<Window.Resources>
    <SolidColorBrush x:Key="numbersColor" Color="#666666"/>
    <SolidColorBrush x:Key="operatorsColor" Color="Green"/>
</Window.Resources>

リソースを使う側の書き方

リソースを使う側はStaticResourceキーワードで、リソースのKeyを指定します。

Background="{StaticResource operatorsColor}“

複数の画面で定義を共有したいとき

Window.Resourcesを定義すると、複数のUI要素に同じ定義を反映することが可能ですが、他の画面からは参照できないため、同じ定義を複数の画面で共有したい場合は問題が生じます。

各画面でWindow.Resourcesを定義してしまうと、背景色に関する定義が、画面ごとに記述されてしまい、アプリケーション全体で統一した色設定ができなくなってしまいます。

その場合は、WPFプロジェクトを作成したときに自動生成されるApp.xamlファイルに記述することで、プロジェクト内のすべての画面から参照することが可能です。

App.xamlファイルのApplication.Resourcesエリアにリソースを定義します。
Window.ResourcesからApplication.Resourcesに変わっています。

<Application.Resources>
        <SolidColorBrush x:Key=“backgroundColor" Color Orange "/>
        <SolidColorBrush x:Key="foregroundColor" Color="White"/>
</Application.Resources>

リソースを定義する場所が違うだけで、リソースを使う側の書き方は変わりません。

スポンサーリンク
スポンサーリンク
C#プログラミング
スポンサーリンク
Step1

コメント

タイトルとURLをコピーしました