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

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

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

正文:

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主题切换(换肤)的更多相关文章

  1. Android 切换主题以及换肤的实现

    Android 切换主题以及换肤的实现 一.介绍 现在市面上有很多 APP 有切换主题和皮肤的功能!特别是阅读类的 APP! 上面两张图分别是 知乎 APP 和Fuubo APP的两张截图!都带有切换 ...

  2. vue 切换主题(换肤)功能

    一:先写好两个css样式放在static文件夹中 二:在index.html中添加css link链接 <link rel="stylesheet" id="sty ...

  3. Windows Phone 资源管理与换肤思考

    新入手一台Windows 8的笔记本,安装了VS2013后,终于又可以开发WP了.公司暂时不愿意开发WP,那么咱就自行研究吧! 在没有WP开发环境的时候,曾经在WPF尝试了一下换肤功能的实现.最简单的 ...

  4. 使用 css/less 动态更换主题色(换肤功能)

    前言 说起换肤功能,前端肯定不陌生,其实就是颜色值的更换,实现方式有很多,也各有优缺点 一.看需求是什么 一般来说换肤的需求分为两种: 1. 一种是几种可供选择的颜色/主题样式,进行选择切换,这种可供 ...

  5. Android主题切换—夜间/白天模式探究

    现在市面上众多阅读类App都提供了两种主题:白天or夜间. 上述两幅图片,正是两款App的夜间模式效果,所以,依据这个功能,来看看切换主题到底是怎么实现的(当然现在github有好多PluginThe ...

  6. Android主题换肤 无缝切换

    2016年7月6日 更新:主题换肤库子项目地址:ThemeSkinning,让app集成换肤更加容易.欢迎star以及使用,提供改进意见. 更新日志: v1.3.0:增加一键切换切换字体(初版)v1. ...

  7. Android 切换主题换肤实现

    思路以及实现 1.主题的切换以及实现 首先我们先来明确个概念,现在我所说的切换主题,就切换整个app的颜色风格,当然也有少部分的图片的切换.注意哦 我这边说的是少部分图片哦!如果是大面积的换图片的吧! ...

  8. vue+less换肤,主题切换方案

    新的项目对于客户自定义要求很高,然后换肤是其中一个很小的模块,经过了一段时间的摸索,看了许多文章,找到了几种方案. https://www.cnblogs.com/leiting/p/11203383 ...

  9. Android主题换肤实现

    本系列文章主要是对一个Material Design的APP的深度解析,主要包括以下内容 基于Material Design Support Library作为项目整体框架.对应博文:Android ...

随机推荐

  1. Jetty服务器jmx监控

    Jetty服务器jmx监控 Jetty 服务器增加jmx,jmx-remote模块 1.修改对应jetty服务器的配置文件start.ini追加如下两行–module=jmx–module=jmx-r ...

  2. 关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析

    原文:http://my.oschina.net/leejun2005/blog/343353 目录[-] 1.问题:mysql 遇到某些中文插入异常 2.原因:此 utf8 非彼 utf8 3.解决 ...

  3. Java多线程之新类库中的构件CyclicBarrier

    1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 Cycl ...

  4. ios模拟器未能安装此应用程序

    网上介绍了很多方法,觉得有些不太靠谱.这里只解释我试验过的最简单最粗暴的方法: 删除模拟器上旧的APP 以外,也可以做 CLEAN (cmd+shift+K) 把旧的build 删掉.

  5. chrome调试js工具的使用

    Audits标签页 这个对于优化前端页面.加速网页加载速度很有用哦(相当与Yslow): 点击run按钮,就可以开始分析页面,分析完了就可以看到分析结果了: 它甚至可以分析出页面上样式表中有哪些CSS ...

  6. Jquery插件收藏

    1.带小图标的多级菜单导航 演示地址:http://js.itivy.com/memu/sample.html 下载地址:http://js.itivy.com/?p=100 效果图:  推荐一个自己 ...

  7. 服务器压力测试 ab

    1.ab命令原理 Apache自带的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力(测试其它服务器时需单独下载ab压力测试工具 ...

  8. [ActionScript 3.0] 根据xml属性查找相应xml节点,递归函数。

    import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; var xml:XML; var ...

  9. [ActionScript 3.0] AS 实现JSON转换为XML

    package com.fylibs.utils { /** * @author:Frost.Yen * @E-mail:871979853@qq.com * @create:2015-12-25 下 ...

  10. linux双机GFS的配置

    1.两台服务器安装如下包: apr-1.2.7-11.el5_3.1.x86_64.rpmapr-util-1.2.7-11.el5.x86_64.rpmcman-2.0.115-34.el5.x86 ...