• WPF 动态更换样式文件


      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);
                    }

                }


            }

  • 相关阅读:
    System.DateUtils 1. DateOf、TimeOf 简单修饰功能
    Servlet高级
    Servlet基础
    AOP的基本概念
    Bean的定义及作用域的注解实现
    Bean
    centos7系统下,配置学校客户端网络记录
    CUDA并行编程思维过程
    CUDA(GPU)OPENCV
    3-决策树
  • 原文地址:https://www.cnblogs.com/zhaolili/p/5133996.html
Copyright © 2020-2023  润新知