ResourceDictionaryをMainWindow.xamlとは別ファイルで作ります。
Themes\ButtonStyles.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="BlueButtonStyle" TargetType="Button">
<Setter Property="Background" Value="#3A7AFE"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Padding" Value="10"/>
</Style>
</ResourceDictionary>
今回はThemesというサブディレクトリにButtonStyles.xamlというファイル名で作成しました。
内容はStyleを定義しました。
MainWindow.xaml
<Window x:Class="ControlTemplateSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ResourceDictionary Sample" Height="200" Width="300">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/ButtonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Button Content="クリック"
Style="{StaticResource BlueButtonStyle}"
Width="120"
Height="40"/>
</Grid>
</Window>
Window.Resources内で、先程作成したButtonStyles.xamlを読み込んでリソースとして使える様にしています。
名前(BlueButtonStyle)を指定してStyleを適用しています。
とりあえず Style を別ファイルに分離して読み込めることを確認しました。
詳細な仕組みはまだ理解していませんが、動作は確認できました。
ちなみにStyleを使わない以下のコードと同等の結果となります。
<Button Content="クリック"
Width="120"
Height="40"
Background="#3A7AFE"
Foreground="White"
Padding="10"/>

コメント