C#プログラミング

【C#】XAMLのStyleを一括で設定する方法【WPF】

スタイルを一括設定する方法 C#

XAMLにおいて、各コントロールにまとめてスタイルを設定することで楽にGUIの体裁をそろえることができます。コントロール毎で記載する方法よりもコードが見やすく、管理も楽なので基本的にはこの方法を使用しましょう。

スポンサーリンク

Styleをまとめて一括設定するメリット

Styleをまとめて設定するには、<Window.Resources/>を用います。

一か所にまとめて記載できるので、各コントロール毎に設定するのに比べて以下のメリットがあります。

  • XAMLのコード量が減る(GUIパーツが多ければ多いほど)
  • GUIの体裁を整えやすい
  • GUIの体裁を把握しやすい

またx:Keyを使用することで、指定したコントロールだけにスタイルを反映させることもできます。

スポンサーリンク

Styleを一括設定するサンプル

以下XAMLを作成しました。

2つのTextBlock用スタイルを記載してます。

<!--  ここにまとめて記載  -->
<Window.Resources>
    <!--スタイル 1 -->
    <Style TargetType="TextBlock">
        <Setter Property="Margin" Value="10" />
        <Setter Property="Foreground" Value="Blue" />
    </Style>
    <!--スタイル 2 -->
    <Style x:Key="style2_key" TargetType="TextBlock">
        <Setter Property="FontSize" Value="20" />
    </Style>
</Window.Resources>
    
<Grid>
    <StackPanel Orientation="Vertical" >
        <Label Content="★スタイル 1 - - - - -" />
        <TextBlock Text="Styleテスト用TextBlock" />
        <TextBlock Text="Styleテスト用TextBlock" />

        <Label Content="★スタイル 2 - - - - -" />
        <TextBlock Text="Styleテスト用TextBlock" Style="{StaticResource style2_key}"/>
        <TextBlock Text="Styleテスト用TextBlock" Style="{StaticResource style2_key}" Foreground="Blue"/>

    </StackPanel>
 </Grid>

表示されるGUIは以下の通り。

サンプルコードの出力
表示されるGUI

Window.Resources内にStyleを記載します。記載事項は

  • x:Key   :必須ではない。適用するコントロールを選択的にするのに使用。
  • TargetType:対象となるコントロール(UIパーツ)を指定
  • Property :設定したい要素(配置・装飾の情報)
  • Value   :設定する値

です。

スタイル1は、x:Keyがないので全てのTextBlockに適応されます。

スタイル2は、x:Keyを設定しており、StaticResourceを設定したコントロールに反映されます。
x:Keyを設定されたコントロールは、他Styleの影響は受けません。
(本例では、スタイル2を設定されたらスタイル1の設定は一切受けない。)

x:KeyでStaticResourceを使用し、さらに追記して見た目を変えることもできます。
(一番下のテキストブロックが該当)

なるべく<Style/>で完結を目指し、そうはいかない場合は各コントロールに追記する考えが良いと思います。

以下は本記事の続編です。値に応じてスタイルを変える方法を紹介しています。

コメント

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