WPFのXAMLでResourceDictionaryを使い別 XAML ファイルに分離するサンプルコード

コンピュータ

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"/>

コメント