ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
生活随笔
收集整理的這篇文章主要介紹了
ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前的ResourceDictionary主題資源替換(一)通過加載順序來覆蓋之前的主題資源,介紹了WPF框架對ResourceDictionary資源的合并規則。
?此篇介紹一種在編譯期間,實現資源替換的方案
前言
如下圖,項目中存在倆個主題資源字典,我們想通過配置一鍵修改項目的主題。
?
?
?
?首先,我們默認使用的是灰色主題
?
?
添加項目屬性文件
新建文件Themes.props(主題設置),
?
并添加當前主題版本:
1 <Project> 2 <PropertyGroup> 3 <Theme>Theme-Red</Theme> 4 </PropertyGroup> 5 </Project>如上,切換當前版本為紅色主題
修改項目csproject
引入主題配置文件:
<Import Project="..\Themes.props" Condition="Exists('..\Themes.props')" />添加資源替換:
在編譯前,判斷當前主題,如果為紅色主題,則替換;
- 將項目中的文件Theme-Normal.xaml、Theme-Red.xaml全部刪除(如果Theme-Red.xaml沒有添加到項目中,是以本地文件存在,則不需要此刪除步驟)
- 將Theme-Red.xaml偽裝為,當前程序資源中的Theme-Normal.xaml
?
替換后的主題色:
?
?
需要注意的坑
此方案,需要資源字典中的鍵值匹配對應,如果缺失了某個樣式等資源,后續可能會有意想不到的異常哦~
如何規避?
可以下載資源字典修復工具,Github地址:ResourceIntegrityCheck
?工具會將缺失的資源,從另一份資源字典中復制到此資源文件中。所以修復完成,提交代碼前可以確認下,資源是否匹配當前主題。
轉載于:https://www.cnblogs.com/kybs0/p/10731416.html
總結
以上是生活随笔為你收集整理的ResourceDictionary主题资源替换(二) :编译期间,替换主题资源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring加载resource时cla
- 下一篇: 七周七语言:Scala Day 3