1. var _1200RDUri = new Uri(String.Format(@"/aa;Component/Themes/1200Theme.xaml"), UriKind.RelativeOrAbsolute);
  2. var _980RDUri = new Uri(String.Format(@"/aa;Component/Themes/980Theme.xaml"), UriKind.RelativeOrAbsolute);
  3. var _1200RD = Application.LoadComponent(_1200RDUri) as ResourceDictionary;
  4. var _980RD = Application.LoadComponent(_980RDUri) as ResourceDictionary;
  5. if (_1200RD == null || _980RD == null)
  6. {
  7. return;
  8. }
  9. if (!IsScreenWidthAbove1200)
  10. {
  11. Application.Current.Resources.MergedDictionaries.Remove(_1200RD);
  12. Application.Current.Resources.MergedDictionaries.Remove(_980RD);
  13. Application.Current.Resources.MergedDictionaries.Add(_980RD);
  14. }
  15. else
  16. {
  17. Application.Current.Resources.MergedDictionaries.Remove(_1200RD);
  18. Application.Current.Resources.MergedDictionaries.Remove(_980RD);
  19. Application.Current.Resources.MergedDictionaries.Add(_1200RD);
  20. }
  1. private static void ChangeAppStyle(ResourceDictionary resources, Tuple<AppTheme, Accent> oldThemeInfo, Accent newAccent, AppTheme newTheme)
  2. {
  3. var themeChanged = false;
  4. if (oldThemeInfo != null)
  5. {
  6. var oldAccent = oldThemeInfo.Item2;
  7. if (oldAccent != null && oldAccent.Name != newAccent.Name)
  8. {
  9. var key = oldAccent.Resources.Source.ToString().ToLower();
  10. var oldAccentResource = resources.MergedDictionaries.Where(x => x.Source != null).FirstOrDefault(d => d.Source.ToString().ToLower() == key);
  11. if (oldAccentResource != null)
  12. {
  13. resources.MergedDictionaries.Add(newAccent.Resources);
  14. resources.MergedDictionaries.Remove(oldAccentResource);
  15.  
  16. themeChanged = true;
  17. }
  18. }
  19.  
  20. var oldTheme = oldThemeInfo.Item1;
  21. if (oldTheme != null && oldTheme != newTheme)
  22. {
  23. var key = oldTheme.Resources.Source.ToString().ToLower();
  24. var oldThemeResource = resources.MergedDictionaries.Where(x => x.Source != null).FirstOrDefault(d => d.Source.ToString().ToLower() == key);
  25. if (oldThemeResource != null)
  26. {
  27. resources.MergedDictionaries.Add(newTheme.Resources);
  28. resources.MergedDictionaries.Remove(oldThemeResource);
  29.  
  30. themeChanged = true;
  31. }
  32. }
  33. }
  34. else
  35. {
  36. ChangeAppStyle(resources, newAccent, newTheme);
  37.  
  38. themeChanged = true;
  39. }
  40.  
  41. if (themeChanged)
  42. {
  43. OnThemeChanged(newAccent, newTheme);
  44. }
  45. }
  46. 这段不能直接用,得看一下代码意思
  47.  
  48. Application.Current.Resources
     Resources = new ResourceDictionary {Source = resourceAddress};

wpf 切换资源字典的2中方式的更多相关文章

  1. WPF之资源字典zz

    最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...

  2. WPF 为资源字典 添加事件响应的后台类

    原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...

  3. WPF合并资源字典

    1.合并多个外部资源字典成为本地字典 示例代码 <Page.Resources> <ResourceDictionary> <ResourceDictionary.Mer ...

  4. WPF使用资源字典组织资源

    转载:http://blog.163.com/wangzhenguo2005@126/blog/static/371405262010111413321728/     首先在解决方案资源管理器中添加 ...

  5. WPF 遍历资源字典中的控件

    object obItem=this.FindResource("canvasdt"); if (obItem is System.Windows.DataTemplate) { ...

  6. WPF(MVVM) 利用资源字典实现中英文动态切换

    1.首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面. 2.将两个资源字典添加到App.xaml中,这里注意下,因为两个字典中有同样字符,如果没有动态更改,默 ...

  7. WPF 界面实现多语言支持 中英文切换 动态加载资源字典

    1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...

  8. WPF中关于合并资源字典

    一.本项目中 <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!--<ResourceD ...

  9. wpf多程序集之间共享资源字典--CLR名称空间未定义云云

    wpf多程序集之间共享资源字典--CLR名称空间未定义云云 分类: WPF 2012-10-28 10:57 1162人阅读 评论(0) 收藏 举报 以下介绍如何创建可用于在多个程序集之间共享的资源字 ...

随机推荐

  1. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  2. IP变化,SVN和数据库的修改

    最近公司换了运营商,将启用新的IP地址,将以前项目的端口映射处理好之外,还需要切换SVN的地址. 项目开发中有可能要修改SVN的IP地址,entries文件里面包含svn服务器的地址信息.每个文件夹都 ...

  3. 面向对象Part2

    `变量: 成员变量:又叫全局变量,定义在类中,方法外面. 1).类成员变量.   使用Static 2).实例成员变量.  没有使用Static. 局部变量:出了成员变量,其他的都是局部变量. 1). ...

  4. 高可用thrift客户池的实现详解

    最近,公司要求将组内的thrift客户端组件推广至公司内使用.基本的要求如下: 1.高可用 2.集成名称服务,也就配置文件支持服务发现 3.解耦,客户端和高可用组件解耦,简单来说就是,如果以后要切换其 ...

  5. Android搜索功能的案例,本地保存搜索历史记录......

    开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示:  本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...

  6. 多功能前台交互效果插件superSlide

    平时我们常用的"焦点图/幻灯片""Tab标签切换""图片滚动""无缝滚动"等效果要加载n个插件,又害怕代码冲突又怕不兼容 ...

  7. eclipse maven maven-archetype-webapp 创建失败

    如果在eclipse中发现创建maven失败,大部分的原因是因为本地仓库坏了,或是少东西了,最直接的方法就时删掉重新下载就好了

  8. Destroying The Graph(poj 2125)

    题意: 给你一张有向图,你可以选择一个点:• 摧毁其所有的入边,代价A[i].• 摧毁其所有的出边,代价B[i].• 求摧毁这张图的最小代价.• 数据范围1000 /* 很经典的一道题目(我这么弱,稍 ...

  9. iOS支付宝支付总结

    1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676& ...

  10. 发布报错:Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store

    发布报错:Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store 昨晚上传项目到AppStore,报了这个错,纳尼! ...