WPF 本地、全局样式和资源字典

282 阅读1分钟

样式

本地样式

样式书写

写在窗口资源
` <Window.Resources>

</Window.Resources> `
的样式为本地样式。

窗体本地样式.png

  • 第一个Style为本地全局样式为此窗口全部类型为button的样式(本地全局样式无需设置KEY值)。
  • 第二个继承了第一个style,KEY为Btn2并修改了BorderThickness边框属性。
  • 第三个继承了第二个style,KEY为Btn3并修改了Background背景颜色属性。

样式绑定

绑定本地样式.png

  • 第一个Button使用的是本地全局样式无需增加代码
  • 第二个Button使用是第二个Style样式需要在Button属性里进行样式绑定 Style="{StaticResource btn2}"
  • 同理

本地样式无法跨窗口

本地无法跨窗体.png
如图不同窗体无法共用,因为本地样式属于本地窗体属性
需要跨窗体使用必须变成全局(整个项目)样式

全局样式

全局样式.png
如图写在App.xaml的

    <Application.Resources>
        <!--Your Styles-->
    </Application.Resources>

中。

资源字典

当需要写多种控件样式时全写在App.xaml里会不好管理维护及查看。这时候可以使用资源字典。

资源字典.png
如图,创建资源字典Dictionary并将样式写在字典里。App.xaml文件进行引用。

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary/Dictionary1.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

本人资源字典放在与App.xaml同目录的Dictionary文件夹里。根据自己资源字典存放路径书写。
此外资源字典还可以相互引用,在资源字典里引用如下

 <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="..."/>
            </ResourceDictionary.MergedDictionaries>

也可以写在Window或者UserControl当局部资源字典使用(尤其是写类库时没有App.xaml文件的时候)

read-normal-img

注意 :当不同资源字典存在相同的KEY值的Style时,会引用第一个字典里的Style如

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"/>
                <ResourceDictionary Source="Dictionary2.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

会使用Dictionary1中相同的KEY值的Style。