wpf 切换资源字典的2中方式
- var _1200RDUri = new Uri(String.Format(@"/aa;Component/Themes/1200Theme.xaml"), UriKind.RelativeOrAbsolute);
- var _980RDUri = new Uri(String.Format(@"/aa;Component/Themes/980Theme.xaml"), UriKind.RelativeOrAbsolute);
- var _1200RD = Application.LoadComponent(_1200RDUri) as ResourceDictionary;
- var _980RD = Application.LoadComponent(_980RDUri) as ResourceDictionary;
- if (_1200RD == null || _980RD == null)
- {
- return;
- }
- if (!IsScreenWidthAbove1200)
- {
- Application.Current.Resources.MergedDictionaries.Remove(_1200RD);
- Application.Current.Resources.MergedDictionaries.Remove(_980RD);
- Application.Current.Resources.MergedDictionaries.Add(_980RD);
- }
- else
- {
- Application.Current.Resources.MergedDictionaries.Remove(_1200RD);
- Application.Current.Resources.MergedDictionaries.Remove(_980RD);
- Application.Current.Resources.MergedDictionaries.Add(_1200RD);
- }
- private static void ChangeAppStyle(ResourceDictionary resources, Tuple<AppTheme, Accent> oldThemeInfo, Accent newAccent, AppTheme newTheme)
- {
- var themeChanged = false;
- if (oldThemeInfo != null)
- {
- var oldAccent = oldThemeInfo.Item2;
- if (oldAccent != null && oldAccent.Name != newAccent.Name)
- {
- var key = oldAccent.Resources.Source.ToString().ToLower();
- var oldAccentResource = resources.MergedDictionaries.Where(x => x.Source != null).FirstOrDefault(d => d.Source.ToString().ToLower() == key);
- if (oldAccentResource != null)
- {
- resources.MergedDictionaries.Add(newAccent.Resources);
- resources.MergedDictionaries.Remove(oldAccentResource);
- themeChanged = true;
- }
- }
- var oldTheme = oldThemeInfo.Item1;
- if (oldTheme != null && oldTheme != newTheme)
- {
- var key = oldTheme.Resources.Source.ToString().ToLower();
- var oldThemeResource = resources.MergedDictionaries.Where(x => x.Source != null).FirstOrDefault(d => d.Source.ToString().ToLower() == key);
- if (oldThemeResource != null)
- {
- resources.MergedDictionaries.Add(newTheme.Resources);
- resources.MergedDictionaries.Remove(oldThemeResource);
- themeChanged = true;
- }
- }
- }
- else
- {
- ChangeAppStyle(resources, newAccent, newTheme);
- themeChanged = true;
- }
- if (themeChanged)
- {
- OnThemeChanged(newAccent, newTheme);
- }
- }
- 这段不能直接用,得看一下代码意思
- Application.Current.Resources
Resources = new ResourceDictionary {Source = resourceAddress};
wpf 切换资源字典的2中方式的更多相关文章
- WPF之资源字典zz
最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...
- WPF 为资源字典 添加事件响应的后台类
原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...
- WPF合并资源字典
1.合并多个外部资源字典成为本地字典 示例代码 <Page.Resources> <ResourceDictionary> <ResourceDictionary.Mer ...
- WPF使用资源字典组织资源
转载:http://blog.163.com/wangzhenguo2005@126/blog/static/371405262010111413321728/ 首先在解决方案资源管理器中添加 ...
- WPF 遍历资源字典中的控件
object obItem=this.FindResource("canvasdt"); if (obItem is System.Windows.DataTemplate) { ...
- WPF(MVVM) 利用资源字典实现中英文动态切换
1.首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面. 2.将两个资源字典添加到App.xaml中,这里注意下,因为两个字典中有同样字符,如果没有动态更改,默 ...
- WPF 界面实现多语言支持 中英文切换 动态加载资源字典
1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...
- WPF中关于合并资源字典
一.本项目中 <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!--<ResourceD ...
- wpf多程序集之间共享资源字典--CLR名称空间未定义云云
wpf多程序集之间共享资源字典--CLR名称空间未定义云云 分类: WPF 2012-10-28 10:57 1162人阅读 评论(0) 收藏 举报 以下介绍如何创建可用于在多个程序集之间共享的资源字 ...
随机推荐
- Azure底层架构的初步分析
之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...
- IP变化,SVN和数据库的修改
最近公司换了运营商,将启用新的IP地址,将以前项目的端口映射处理好之外,还需要切换SVN的地址. 项目开发中有可能要修改SVN的IP地址,entries文件里面包含svn服务器的地址信息.每个文件夹都 ...
- 面向对象Part2
`变量: 成员变量:又叫全局变量,定义在类中,方法外面. 1).类成员变量. 使用Static 2).实例成员变量. 没有使用Static. 局部变量:出了成员变量,其他的都是局部变量. 1). ...
- 高可用thrift客户池的实现详解
最近,公司要求将组内的thrift客户端组件推广至公司内使用.基本的要求如下: 1.高可用 2.集成名称服务,也就配置文件支持服务发现 3.解耦,客户端和高可用组件解耦,简单来说就是,如果以后要切换其 ...
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- 多功能前台交互效果插件superSlide
平时我们常用的"焦点图/幻灯片""Tab标签切换""图片滚动""无缝滚动"等效果要加载n个插件,又害怕代码冲突又怕不兼容 ...
- eclipse maven maven-archetype-webapp 创建失败
如果在eclipse中发现创建maven失败,大部分的原因是因为本地仓库坏了,或是少东西了,最直接的方法就时删掉重新下载就好了
- Destroying The Graph(poj 2125)
题意: 给你一张有向图,你可以选择一个点:• 摧毁其所有的入边,代价A[i].• 摧毁其所有的出边,代价B[i].• 求摧毁这张图的最小代价.• 数据范围1000 /* 很经典的一道题目(我这么弱,稍 ...
- iOS支付宝支付总结
1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676& ...
- 发布报错: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,报了这个错,纳尼! ...