ApplySkinFromMenuItem("Style/BigImgStyle.xaml", "Style/FileListStyle.xaml");

  //换肤
        void ApplySkinFromMenuItem(string source, string oldSources)
        {
            string skinDictPath = source;
            App app = Application.Current as App;
            app.ApplySkin(skinDictPath, oldSources);
        }

ApplySkin(这个方法是写在Application文件中的)

  /// <summary>
        /// 换样式 (这个方法是写在Application文件中的)
        /// </summary>
        /// <param name="newPaths">要加入的新样式文件路径</param>
        /// <param name="oldxamls">要删除的老的样式文件路径</param>
        public void ApplySkin(string newPaths, string oldxamls)
        {
            Collection<ResourceDictionary> mergedDicts = base.Resources.MergedDictionaries;
            string[] ss = oldxamls.Split(',');
            if (ss.Length > 0)
            {
                foreach (var path in ss)
                {
                    if (mergedDicts.Count > 0 && path.Trim() != "")
                    {
                        foreach (var item in mergedDicts)
                        {
                            if (item.Source.OriginalString.Trim().EndsWith(path.Trim()))
                            {
                                mergedDicts.Remove(item);
                                break;
                            }
                        }
                    }
                }
            }
            if (newPaths != "")
            {
                try
                {
                    string[] newss = newPaths.Split(',');
                    if (newss.Length > 0)
                    {
                        foreach (var item in newss)
                        {
                            Uri skinDictionaryUri = new Uri(item, UriKind.Relative);
                            ResourceDictionary skinDict = new ResourceDictionary();
                            //ResourceDictionary skinDict = Application.LoadComponent(skinDictionaryUri) as ResourceDictionary;
                            skinDict.Source = skinDictionaryUri;

mergedDicts.Add(skinDict);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("dsds:" + ex.Message);
                }

}

}

WPF 动态更换样式文件的更多相关文章

  1. WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog

    1.前言 WPF并没有文件选择对话框,要用也就只有使用Winform版的控件.至今我也没有寻找到一个WPF版本的文件选择对话框. 可能是我眼浊,如果各位知道有功能比较健全的WPF版文件选择对话框.文件 ...

  2. WPF 后台读取样式文件

    ResourceDictionary dic = new ResourceDictionary { Source = new Uri("Styles.xaml",UriKind.R ...

  3. WPF 动态更换模板

    Window x:Class="模板选择器.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml ...

  4. WPF通过DynamicResource实现给界面动态更换皮肤

    在我们的程序中有时候需要去实现动态更换皮肤的效果,从而完成一些个性化的设置,那么我们究竟怎样去实现动态换皮肤的效果呢?那么我们经常用到的就是设置不同的Style,并且在主程序的xaml文件中通过Dyn ...

  5. WPF 动态添加控件以及样式字典的引用(Style introduction)

    原文:WPF 动态添加控件以及样式字典的引用(Style introduction) 我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的 ...

  6. 为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件

    为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件.样式文件命名格式如:forms[_屏幕宽度].css,样式文件中只需重新定义文本框和下拉框的宽度即可. 在包含的头文件 ...

  7. 动态为页面添加CSS样式文件引用

    动态为页面添加CSS样式文件引用: if (document.createStyleSheet) { //IE document.createStyleSheet("./Themes/Def ...

  8. Drupal 通过API动态的加入样式文件

    前面几篇文章中讲到关于样式的载入方式.已经了解到能够通过 theme.info 载入样式文件,但都须要更新缓存才干够使用.因些这样子没有办法动态的载入一些样式文件,在DP中提供了两个API操作样式文件 ...

  9. 【WPF】XAML引入资源和在C#代码中动态添加样式

    转载自: http://blog.csdn.net/honantic/article/details/48781543 XAML引入资源参考这里: http://blog.csdn.net/qq_18 ...

随机推荐

  1. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)

    转载自: http://blog.csdn.net/jdsjlzx/article/details/7606423

  2. string、Empty和null三者的区别

    string.Empty和null三者的区别 本文转自  http://www.bitscn.com/pdb/dotnet/201003/181883.html 时间:2010-03-01 00:00 ...

  3. Modern Operating Systems(Ⅰ)——2014.12.15

    进程   进程模型     进程就是一个正在执行的程序的实例  值得注意的是,若一个程序运行了两遍,则算作两个进程 创建进程 在通用系统中,有四种主要事件导致进程的创建 ①系统的初始化 ②执行了 正在 ...

  4. sqlserver创建,调用 带返回值存取过程

    <1>create: ALTER  proc [dbo].[common_proc] @sql1 varchar(5000), @sql2 varchar(5000) OUTPUT as ...

  5. 使用Linux碎解三_CentOS7搭建Lamp环境安装zabbix遇到的问题

    问题一:  执行不了 yum命令 解决方案:配置系统的DNS(详细参见碎解二) 问题二:  make 命令的时候,出现错误 提示 和没有gcc大体相关 解决方案:yum install gcc (在网 ...

  6. js中var self=this的解释

    每个函数在定义被ECMAScript解析器解析时,都会创建两个特殊的变量:this和arguments,换句话说,每个函数都有属于自己的this对象,这个this对象是在运行时基于函数的执行环境绑定的 ...

  7. 从零构建一个简单的 Python Web框架

    为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...

  8. Endless Sky源码学习笔记-5

    游戏启动后的UI划分为三个区域,左侧滚动显示credits等信息以及偏好设置和退出按钮,中间显示载入动画,右侧显示玩家信息以及载入存档按钮,调用void MenuPanel::Draw()实现.首先画 ...

  9. POJ1236 network of schools

    100个学校,有单向网络连接,从而分享软件. 问题一:几个学校得到软件就可使所有学校都得到? 问题二:再加几条单向网络可以使得"任意学校得到软件,就可使得所有学校都有软件"? -- ...

  10. Postgres SQL学习笔记

    1.创建表,添加,查询 create table StuInfo ( StuId SERIAL primary key,-- 自动增长列 StuName ), Birthday Date, StuPh ...