网站设计 方案,杭州营销型网站建设工作室,wordpress最好的编辑器,互联网技术之前的ResourceDictionary主题资源替换#xff08;一#xff09;通过加载顺序来覆盖之前的主题资源#xff0c;介绍了WPF框架对ResourceDictionary资源的合并规则。 此篇介绍一种在编译期间#xff0c;实现资源替换的方案 前言 如下图#xff0c;项目中存在俩个主题资源字… 之前的ResourceDictionary主题资源替换一通过加载顺序来覆盖之前的主题资源介绍了WPF框架对ResourceDictionary资源的合并规则。  此篇介绍一种在编译期间实现资源替换的方案 前言 如下图项目中存在俩个主题资源字典我们想通过配置一键修改项目的主题。         首先我们默认使用的是灰色主题      添加项目属性文件 新建文件Themes.props主题设置    并添加当前主题版本  1 Project
2   PropertyGroup
3     ThemeTheme-Red/Theme  
4   /PropertyGroup
5 /Project  如上切换当前版本为红色主题 修改项目csproject 引入主题配置文件    Import Project..\Themes.props ConditionExists(..\Themes.props) /  添加资源替换 在编译前判断当前主题如果为红色主题则替换 将项目中的文件Theme-Normal.xaml、Theme-Red.xaml全部删除如果Theme-Red.xaml没有添加到项目中是以本地文件存在则不需要此删除步骤将Theme-Red.xaml伪装为当前程序资源中的Theme-Normal.xaml  1   Target NameReplaceTheme BeforeTargetsBeforeBuild Condition$(Theme)  Theme-Red2     ItemGroup3       Page RemoveTheme-Normal.xaml /4       Page RemoveTheme-Red.xaml /5       Page IncludeTheme-Red.xaml6         GeneratorMSBuild:Compile/Generator7         LinkTheme-Normal.xaml/Link8       /Page9     /ItemGroup
10   /Target    替换后的主题色     需要注意的坑 此方案需要资源字典中的键值匹配对应如果缺失了某个样式等资源后续可能会有意想不到的异常哦~ 如何规避 可以下载资源字典修复工具Github地址ResourceIntegrityCheck   工具会将缺失的资源从另一份资源字典中复制到此资源文件中。所以修复完成提交代码前可以确认下资源是否匹配当前主题。 转载于:https://www.cnblogs.com/kybs0/p/10731416.html