WPF资源,资源通常指定为页面根元素或应用程序的 Resources 属性值。
主要用于对控件的样式进行设置,如字体大小颜色控制,
图形图片的嵌入等。
1.根据编译和运行状态,可以分为静态资源和动态资源。
静态资源在编译好了以后,不会随程序运行而改变,就算对静态资源
做了修改,依然没用的;而动态资源可以在运行过程进行修改。
静态资源和动态资源的区别,是在运行时对引用资源的内容修改是否引起资源本身的变化。
比如StaticResource key,运行时修改key所代表的资源内容,不会引起程序改变。
而DynamicResource key,运行时修改key所代表的资源内容,会通知资源改变。
注意这里的key是不变的,key所代表的内容被修改。
如果你在程序中把key1改成key2,无论静态资源还是动态资源,都会被修改的。
2.根据资源所在位置,可以分为四类:
下面介绍按照静态资源作为示例,动态资源同样适用,
只是引用时候静态资源是StaticResource key
动态资源是DynamicResource key,其中key就是资源中x:key中的key。
(1)应用程序资源,定义在App.xaml中,对整个应用程序有效,
如下示例:
<Application.Resources>
<sys:String x:Key="str">应用资源字</sys:String>
<SolidColorBrush x:Key="AppResource" Color="Red"></SolidColorBrush>
</Application.Resources>
(2)窗体级资源,定义在某窗体的xaml,对当前窗体有效
<Window.Resources>
<SolidColorBrush x:Key="WindowResource" Color="Blue"></SolidColorBrush>
<ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary> 这里引用的文件资源
</Window.Resources>
(3)对象资源,对当前对象有效,如:
<Grid>
<Grid.Resources>
<sys:String x:Key="str">对象资源字</sys:String>
<SolidColorBrush x:Key="ObjectResource" Color="Yellow"></SolidColorBrush>
</Grid.Resources>
<Button Width="100" Height="50" Content="{StaticResource str}" Background="{StaticResource WindowResource}">
</Button>
</Grid>
(4)文件资源,定义在单独的文件中,定义个xaml资源文件,
根目录是ResourceDictionary,如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String x:Key="str">文件资源字</sys:String>
<SolidColorBrush x:Key="WindowResource" Color="Green"></SolidColorBrush>
</ResourceDictionary>
在应用程序中,如果资源名字相同,那么应用在控件上的资源会按照优先级排序应用。
首先,查找当前对象上的资源,然后再到窗体,最后查找应用程序。
对于文件资源,要看是在那里引用它。如果在对象上引用,它就作为对象资源,依次类推。
3.在代码中查找资源,可以适用Resources["str2"];
或者this.FindResource("str2");
其中str2代表资源的key。
this.button1.Content = Resources["str2"];