为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

WPF换肤

2018-04-28 4页 doc 52KB 23阅读

用户头像

is_562397

暂无简介

举报
WPF换肤WPF换肤 WPF中的换肤 当“皮肤”这个术语被应用到用户界面中来时,就是指被运用于用户界面上的所有界面元素的可视化样式。一个可”换肤”的用户界面既可以是在编译时也可以是在运行时被定制(制定皮肤)。WPF为用户界面的”换肤”提供了强大的支持。 对于一个软件来说在很多情形下“换肤”也许将变得非常重要。它可以被用来允许最终用户根据个人审美观念来定制自己的软件界面。还有一种情形也许会用到“换肤”,就是当一个公司开发的应用程序被分发成多种客户端,也许每个客户端得拥有它自己的Logo、颜色、字体等等,如果这些程序被有意地设计成可换...
WPF换肤
WPF换肤 WPF中的换肤 当“皮肤”这个术语被应用到用户界面中来时,就是指被运用于用户界面上的所有界面元素的可视化样式。一个可”换肤”的用户界面既可以是在编译时也可以是在运行时被定制(制定皮肤)。WPF为用户界面的”换肤”提供了强大的支持。 对于一个软件来说在很多情形下“换肤”也许将变得非常重要。它可以被用来允许最终用户根据个人审美观念来定制自己的软件界面。还有一种情形也许会用到“换肤”,就是当一个公司开发的应用程序被分发成多种客户端,也许每个客户端得拥有它自己的Logo、颜色、字体等等,如果这些程序被有意地成可换肤的话,那么只需要付出一点点的努力就可以很轻松的完成这项任务了。 先看一个简单的例子: &需求:WPF中,点界面中的按钮 ,变化界面背景图片 比较通用的是利用WPF的DynamicResource。做法如下: 比如要改变当前Window的Background。 首先,要在Window的xaml文件里面加上这句话Background="{DynamicResource bg} ",因为这里使用的Key值是bg,这就需要把所有Skin里面的x:Key使用同样的字符串。 其次,一般来说需要为程序写一个默认的皮肤,比如写这样一个DefaultSkin.xaml,里面定义了一个黄色的画刷作为默认的皮肤,也可以使用RedSkin、BlueSKin之一作为默认的皮肤 DefaultSkin.xaml代码如下: C# code 接着,需要在程序开始的时候把默认的皮肤加载进去,这部分放在Window的构造里去做比较合适,代码如下: C# code 当点击Button进行换成红色皮肤时代码如下(换成蓝色皮肤一样): C# code 解决WPF换肤问需要了解“层次型资源”和“动态资源引用”: 层次型资源 在WPF中有很多类型都拥有一个ResourceDictionary类型的公开属性Resources,该字典包含了一个“键-值”对应列,其中“键”可以是任意类型的对象,其“值”就是一个资源(“值”也可以是任意类型的对象)。大多数时候我们放入资源字典中的“键”都是string类型的对象,而有时也可能是其他类型。所有的资源都被存放到这样的资源字典中,而资源查找程序正是使用它们来查找所需的资源。 在应用程序中,资源是按照一种层次关系被组织在一起的。当定位资源(比如画刷、样式、数据模板或任意类型的对象)时,软件就会执行一个导航于这个层次组织间的查找程序来查找与指定“键”相对应的资源。 它(资源查找程序)会首先检查需求该资源的元素自己所拥有的那些资源,如果没有找到,则它会检查该元素的“父元素”,看该“父元素”是否拥有所需的资源。如果“父元素”也没有所需的资源,则它会继续沿着“元素树”向上检查该元素的每一个“祖先”。如果仍然没有找到,则它最终会向Application对象询问该资源。 动态资源引用 解决这一难题(软件换肤)的最后一个基础点是通过元素的属性动态地访问可视化资源的这一机制,这也就是扩展标记DynamicResource所做的事情。动态资源引用就像数据绑定一样,当资源在运行时被替换后那些使用该资源的属性将被赋予新的资源。比如说我们有一个TextBlock对象,它的Background属性必须被设定为由当前皮肤决定的任意的Brush,我们可以为该TextBlock对象的Background属性建立一个动态资源引用,当在运行时软件的皮肤被更换后,与之相应的画刷就将被应用于该TextBlock。动态资源引用将会自动地用新画刷来更新TextBlock对象的Background属性。 个人见解 由于资源查找程序会沿着“元素树”一级一级地向上查找指定“键”相对应的资源,我们可以将定义了Style的 “资源字典(xaml)”作为Application对象的Resource,如: 这样“BlueStyle.xaml”中定义的所有Style都可以被整个程序引用,这也可以作为默认皮肤一种解决方法。在程序运行时,用户选择换肤,只需要把Application对象的Resource替换成指定的资源字典就可以了。 最后附上一个例子: SkinnableApp.zip
/
本文档为【WPF换肤】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索