首页 > Windows开发 > 详细

windows phone主题切换(换肤)

时间:2014-01-26 17:52:20      阅读:460      评论:0      收藏:0      [点我收藏+]

之前项目做了个主题切换的功能,最后客户没来得及出第二套界面给放弃了,默哀中。。。

为了不让它就这样流产了,就放博客共享吧。

首先说明下原理:这个切换是通过重写资源字典里指定的样式,在运行的过程中加载指定的资源字典,然后刷新界面来实现主题切换。很简单,也没几行代码,应该有更好的方式,因为这个需要手动去刷新界面,感觉切换起来用户体验不是很好,如果有更好的方式,请大神拍砖。。。

正文:

1、先将按默认的主题写好资源字典,然后根据不同的主题要求,在新的资源字典中重写部分style。

2、新的资源字典需要Merged默认的主题的资源字典,在新的资源字典里写如如下代码:

<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="默认主题的路径"/>
</ResourceDictionary.MergedDictionaries>

3、这里就需要开始重新加载资源了,继续贴代码:

Application.Current.Resources.Clear();    //先清除当前的资源
Application.LoadComponent(Application.Current.Resources,new Uri("主题路径", UriKind.Relative));  //加载新的主题

4、最后就是刷新界面,上代码:

NavigationService.Navigate(new Uri(“界面路径” +"?Refresh=" + Guid.NewGuid(), UriKind.Relative));

据说这种刷新方式有点问题,会小概率的出现刷新失败的情况,不过我们测试的过程中并没有出现。

还可以考虑另一种更暴力的刷新方式:增加一个空页面,刷新的时候导航到这个页面,在这个页面的OnNavigatedTo方法内重新导航到之前的页面。。。

windows phone主题切换(换肤)

原文:http://www.cnblogs.com/sunday860/p/3532675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!