WPF中使用资源

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中使用资源相关的知识,希望对你有一定的参考价值。

    这节讲一下如何在WPF中使用资源。

01

了解资源

    在编程中,一个变量,一段代码,一张图片,一段视频或者音频,这种可以拿来为我所用的东西就可以称之为资源,一个让人眼前一亮的程序,可能会使用到许许多多的资源。在WPF中,除了常用的根据路径引用资源文件,还为我们提供了管理资源数据的“对象级”资源,以及Resources.resx文件,前者通过一个类型为ResouceDictionary的键值对对象来管理页面中定义的资源,后者则是一个资源表,可以供我们全局使用(当前并不是前者不能让我们全局使用,我们在App.xaml中定义的资源是可以被全局使用的)。

02

"对象级"资源

    我们可以在XAML页面定义一些资源供我们使用,请先看如下代码:

    在Window.Resources标签内的ResouceDictionary中可以定义资源,通过key属性指定资源的标识。此处我定义了key为btn_bgc字符串资源,该资源被Grid中的Button.Content属性使用,运行效果如下:

    在Xaml中,我们可以使用标记扩展中的StaticResourceDynamicResource指令引用资源,该两者的区别是,使用StaticResource,会在程序启动时读取一次资源数据,后续如果资源数据变动,引用者是不会知道的;而DynamicResource则是会多次读取,动态更新。

    除了在Xaml中使用资源,我们也可以在代码中通过Resoure对象获取,请看如下代码:

    从后台代码中,我们可以使用FindResource方法或访问Resources对象通过索引器的方式获取,但两者还是有区别的,FindResource方法的查找面很广,在App.Xaml中定义的资源,也会被找到,而Resources对象则是只会找本页面定义的资源。

03

Resources.resx文件

    在项目的Properties下展开可以找到这个文件:

    双击打开后,是个列表,我们可以看到是个表格界面:

    左上角可以指定资源是string还是其它:

    默认情况下,该文件的访问级别(Access Modifier)是Internal,也就是在代码中可以访问,一般来说,应该改为Pubilc,这样在Xaml中也可以访问。

    在代码中获取该资源如下:

    在Xaml中获取该资源如下:

    在.NET 5版本中,默认去掉了Properties这个文件夹,但如果需要的话我们依然可以通过手动为项目添加Resources.resx文件。

以上是关于WPF中使用资源的主要内容,如果未能解决你的问题,请参考以下文章

wpf窗口中的资源的混合使用---WPF

wpf中静态资源和动态资源的区别

[WPF]静态资源(StaticResource)和动态资源(DynamicResource)

[WPF]静态资源(StaticResource)和动态资源(DynamicResource)

WPF学习第三十四章 资源基础

使用 c# wpf 从资源文件播放声音