1.资源
2.WPF对象级资源的定义与查找
2.1 资源的定义
每个WPF的界面元素都有一个名为Resource的属性,其类型为ResourceDictionary。ResourceDictionary能够以“键-值”对的形式存储资源。需要用到某个资源,就可以根据“键-值”对索引到资源对象。
检索资源时,会按照下面的方式进行:
![4d0ae7f5aeb94e459b811dfcf17a6062.png](https://i-blog.csdnimg.cn/blog_migrate/5bdaad5e92c33a3b14181a77e4fc236d.png)
2.2 资源地查找
1. C#中使用FindResource来查找在XAML里定义的x:Key的值
2. 当把资源统一放在一个独立的xaml文件里时,窗口要想用这个xaml文件可以在窗口的Window.Resources中用,如下:
//Source是同一项目下的Model文件夹中的ResFile.xaml
<Window.Resources>
<ResourceDictionary Source = "../Model/ResFile.xaml"/>
</Window.Resources>
3.“动“和”静“资源
静态资源(StaticResource): 程序运行起来后只对这个资源使用一次(程序第一次加载初始化的时候使用一次),之后就不访问它了。
动态资源(DynamicResource):程序运行过程中仍然会去访问这个资源。
4.向程序添加二进制资源
在项目中有Properties,打开之后会看到Resources.resx文件,如果要添加的资源是字符串而非文件(图标,图片,音频,视频都不可以用),可以使用Resources.resx文件添加,为了方便访问,Resources.resx的访问级别改成public,在XAML窗口中可以用x:Static来访问这些字符串
5.使用Pack URI路径访问二进制资源
单个文件可以直接用Source = "../Model/ResFile.xaml",但是如果在一个窗口的Windows.Resources中要引用多个xaml文件,可以用pack://的方法引用
//引用多个xaml文件
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application,.../ResFolder/buttonstyle.xaml"/>
<ResourceDictionary Source="pack://application,.../ResFolder/buttonstyle1.xaml"/>
<ResourceDictionary Source="pack://application,.../ResFolder/buttonstyle2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>