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

Posted JeffLee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《深入浅出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》学习笔记之深入浅出话资源的主要内容,如果未能解决你的问题,请参考以下文章

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

WPF学习第十集-深入浅出话资源

WPF学习第十集-深入浅出话资源

《深入浅出WPF》学习笔记之绘图和动画

深入浅出WPF的目录

分享深入浅出WPF全系列教程及源代码