WPF资源的学习,使用和管理,以及不显示资源的问题解决
本篇博客介绍WPF中资源的使用,管理,以及资源不显示的异常解决办法。欢迎转载,欢迎评论。
一,WPF的资源
1,WPF的资源有很多种,例如常量字符串,图片,主题色彩,主题风格,字体库等等。
下面我们先从最简单的资源开始,使用一个简单的字符串常量,作为我们的资源。

上图中,就是使用一个简单的窗体资源(当然也可以声明某个控件的资源),这个资源是字符串类型的常量,把这个资源绑定到我们的TextBlock控件上。
2,声明一个ImageBrush类型的资源,作为Button控件的背景。

可以看到,按钮使用了ImageBrush资源,并且成功的显示出了图片背景。
3,这时候,问题也就显现出来了,当我们的额资源非常多的时候,如果全部把写在窗体的xaml中,xaml将会非常的臃肿凌乱,难
以阅读。我们就要想办法把资源放到统一的一个地方,这个地方就是App.xaml。
二,资源的管理和归类
1,注意,我们将要添加资源的地方是App.xaml,不是App.xaml.cs。这个配置称为资源字典,我们把所有的资源都可以写在这里。 
在App.xaml中定义完了画刷资源后,我们来使用它:

当我们为Button控件的Background键入我们定义的“imageBrush”后,Button控件将会显示我们为其指定的图片,作为背景。
此处,虽然我们定义了画刷资源,作为窗体的资源,即使和App.xaml中定义的名称重复,但是仍然不影响我们使用窗体资源,和在
App.xaml中定义的资源,只不过他们是有优先级顺序的。有兴趣的朋友可以继续研究他们的优先级顺序。
2,资源的进一步归类管理
上面的用法还有一个问题,当我们的资源非常多的时候,所有的资源将会全部聚集在这个App.xaml文件中,这样的话,
App.xaml文件将会非常的杂乱无序,导致资源难以管理和修改。无论是代码还是资源,我们尽量使其松散,加强重构
和复用功能。下面我们来继续改进: 
在项目中,新建一个文件夹,名字为“Resource”,在“Resource”文件夹内新建一个资源字典文件“ResourceDic.xaml”。在
“ResourceDic.xaml”中定义我们的资源:定义完之后,ResourceDic.xaml长这个样子:

在这里我们定义了很多的资源,但是对于整个项目的文件来说,它不显得繁杂,因为我们所有的资源,都存在于Reource这个文
件夹内,即使以后再增加新的资源,我们只需再增加一个新的资源字典文件即可。甚至可以按照字体,常量,图片,等,给这些
资源进行进一步的归类整理。
资源字典已经定义好了,该如何让使用它呢?我们来到App.xaml中,针对整个项目,修改为如下所示:

在上图中,修改完App.xaml文件,然后保存。下面来使用它。
3,使用整理后的资源

本例中,我们使用了字体家族作为我们的资源,所以我们会看到Button最终呈现的效果是图标。
三,项目过程中的问题和解决办法
1,在设计器中可以显示使用我们的图片和字体库资源,但是在运行时中,却不能显示,如下图所示:

设计时就是我们在xaml中,进行界面设计时,Button可以正常的显示使用,但是程序运行起来时,Button却没有了图标,这是因为
我们没有把资源属性的设置为资源,我们可以这样来解决:

然后就会来到下图所示画面:

把资源文件的“生成操作”的值,选择为:Resource。然后清理解决方案--->重新生成,再次运行,就可以了。
2,资源字典文件的生成操作:您还记得我们创建的资源字典ResourceDic.xaml文件吗?需要把它的属性设置为“Page”。 
四,总结
1,资源归类整理,提高了程序的可读性和扩展性,当我们需要修改某处的显示效果的时候,可以快速找到资源文件,进行修改。
2,增加项目资源的时候,就在Resource文件夹下,加入一个新的资源字典就可以了,不需要有其他过多的考虑,使项目的开发
更加规范化。
3,流程总结如下:

本项目已上传至Github,您可直接下载运行:https://github.com/Wind-DL/WPFKnowledge.git
VS版本:Microsoft Visual Studio Community 2019 版本 16.6.3
.NET Framework 4.5
电脑查看不方便?试试关注公众号吧,本博文已同步至微信公众号。


浙公网安备 33010602011771号