WPF资源

资源是保持有用对象在附近的一种方法。诸如:刷子,样式,或模板对象。因此,你能更容易地重用他们。尽管创造和操纵资源能用代码,通常用XAML标记。一个资源被定义以后,你能使用它,在窗口中,标记的剩余部分(或,在一个应用资源的情况下,遍及你的应用的剩余部分)。这技术简化你的标记,节省重复的编码,和允许你存储用户界面细节(诸如你的应用的颜色方案)在一个中心的地方因而他们能被容易地修改。对象资源也是重用WPF样式基础。
资源基础:
你定义资源的位置可以在代码中、或在标记的各种地方(除了特殊控件、特殊窗口、或者整个应用程序)。资源的好处包括:效率高,可维护性,适应性。
资源集合:
每个元素包括一个Resources属性,存储一个资源的词典集合。是ResourceDictionary类的一个实例。资源集合能持有任何类型的对象,由字符串索引。
尽管每个元素包括Resources属性(定义在FrameworkElement类),最常在窗口元素上定义资源。那是因为每个元素首先访问自己的资源集合,然后是它父元素的资源集合。

例如,考虑带有三个按钮的窗口,第一个和最后一个按钮使用同样的刷子。为了重用,我们在资源中为窗口定义了图像刷子。
在这里插入图片描述

考虑第一个特性x:Key,这为资源分配了一个名字,用于在资源集合中检索。名字可以使用任何字符串。
引用资源使用标记扩展,有两种:静态资源,动态资源。静态资源在窗口第一次创建时,被设置一次。动态资源每当资源改变时,被应用。这个例子中,图像刷子不会改变,所以使用静态资源。
在这里插入图片描述
动态资源可以完成静态资源的功能,只是多一些开销。
在这里插入图片描述

资源的层次结构:
每个元素都有自己的资源集合,WPF沿元素树向上执行一个递归的搜索,查找你希望的资源。在当前的例子中,你能移动图像刷子资源从窗口的资源集合到StackPanel的资源集合。应用程序的工作方式不会变化。你也能将图像刷子放在按钮的资源集合,但是每个按钮都要定义一次
当使用一个静态的资源,必须在引用资源之前定义资源。
结果,如果你在按钮元素中放置资源,需要先定义资源,再设置背景:
在这里插入图片描述
这个例子中,使用嵌套元素引用资源。使用ResourceKey指向正确的资源。
可以在不同的资源集合中使用相同的资源名:在这里插入图片描述

在这种情况下,按钮使用它发现的第一个元素。因为他从自己开始搜索资源集合,第二个按钮使用sadface.jpg图像,而第一个按钮从容器窗口获得刷子,使用happyface.jpg图像。
静态资源和动态资源
静态资源一次性从资源集合抓取对象。
动态资源每当需要时查找资源集合中的对象。
仅当下列情况使用动态资源:
资源依赖于系统设置(如Windows当前颜色和字体)。
以编程方式替换资源对象(例如,实现某种动态皮肤特征)。
非共享资源:
在这里插入图片描述
通常,当在多个地方使用一个资源时,使用的是相同的对象实例。也就是说,资源是共享的。
为关闭共享,使用Shared属性

每次引用非共享元素,都会克隆一个新的资源实例。
在代码中访问资源:
在这里插入图片描述
在代码中使用 FrameworkElement.FindResource()方法引用资源:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值