ResourceDictionary主題資源替換(一) :通過加載順序來覆蓋之前的主題資源


當我們需要在程序中替換主題,更換另一套背景、顏色、樣式時,如何在不修改資源Key值,直接替換呢?

問題&疑問

 1. Key值沖突

同一ResourceDictionary中,不可以使用相同Key

2. 資源替換

添加倆套樣式,Xaml下是否可以將原有的資源(如樣式)替換成新的資源?

加載順序是否會沖突,比如倆個字典中都存有Image.Search圖片資源,最終會以哪個字典中的資源為准呢

 

ResourceDictionary的合並方案

WPF的ResourceDictionary合並時,合並的規則能解決此沖突及加載順序問題

ResourceDictionary合並:

  1. 檢查ReourceDictionary所有資源Key列表
  2. 檢查ResourceDictionary.MergedDictionaries中的字典,從列表尾部遍歷到表頭。
  3. 按以上檢查順序,檢查到相同Key值時,會以檢查到的首個Key為准。即添加字典時,最后一個字典下的資源。

詳細的官方文檔,截圖如下:

所以,不同主題的資源,可以通過MergedDictionaries添加不同的字典,以加載順序來覆蓋之前的主題資源。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM