首页 > 代码库 > 《深入浅出WPF》学习笔记之深入浅出话资源

《深入浅出WPF》学习笔记之深入浅出话资源

资源的使用

每个继承自FrameworkElement的类都有一个Resources的字段属性,用来存放自己的资源对象,Resources的类型为SourceDictionary,可以指定Source属性为一个文件路径而引用整个文件的资源。

    <Window.Resources>        <sys:String x:Key="title">资源示例</sys:String>    </Window.Resources>//引用外部资源文件    <Window.Resources>        <ResourceDictionary Source="skin.xaml"></ResourceDictionary>    </Window.Resources>//通过代码查找            Object obj1 = Resources["key1"];            Object obj2 = FindResource("key2");

当在XAML中通过标记扩展引用资源时会自动向对象上层寻找,直到找到Application.Resources,还未找到时抛出异常。通过代码调用方法FindResource的效果与在XAML中通过标记扩展应用相同,即会自动向上层对象查找,未找到时抛出异常。通过具体对象的引用Resources["key"]只会查找该字典中的资源,并且未找到时不会抛出异常。

DynamicResource与StaticResource

静态资源指的是在程序载入后一次性使用资源,动态资源指的是在程序运行过程中仍会去访问资源,如果资源已改变则引用资源的对象会得到新资源值。如果确定资源不会改变应使用StaticResource引用资源,如果资源可能会改变应使用DynamicResource应用资源。

二进制资源

可以在项目的Properties文件夹中修改Resources.resx文件来使用字符串形式的二进制资源,在XAML中通过Static标记扩展引用字符串格式的二进制资源,需要把自动生成的Resources类改成public并把所在命名空间引入到XAML中。引用其他文件资源时直接把文件加入到项目中并设置文件属性的Build Action为Resource,Copy to Output Directory为Do Not Copy。直接通过相对路径就可以引用项目中的二进制资源。示例代码:

<Image x:Name="img" Source="Resources/Image1.png" Width="50" Height="50"></Image>//img.Source = new BitmapImage(new Uri("Resources/Image1.png", UriKind.Relative));

 

《深入浅出WPF》学习笔记之深入浅出话资源