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は以下の通り。
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/>で完結を目指し、そうはいかない場合は各コントロールに追記する考えが良いと思います。
以下は本記事の続編です。値に応じてスタイルを変える方法を紹介しています。
コメント