2010-03-04 33 views
16

我想構建一個允許用戶在運行時更改主題的wpf應用程序。到目前爲止,我所做的是創建一個resourcedictionary,其中定義了應用程序的所有顏色,然後綁定到xaml中的該字典。在運行時切換wpf資源字典

下面是代碼我有切換資源字典:

if (System.IO.File.Exists(fileName)) 
{ 
    using (FileStream fs = new FileStream(fileName, FileMode.Open)) 
    { 
     ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs); 
     Resources.MergedDictionaries.Clear(); 
     Resources.MergedDictionaries.Add(dic); 
    } 
} 

此代碼運行正常,而且我知道,它是開關的資源字典,但它不更新已經顯示在屏幕上的元素。我的問題是:如何刷新或重新綁定屏幕以考慮新的資源字典?

感謝

SM

回答

13

就我而言,我只是不得不改變:

Resources.MergedDictionaries.Clear(); 
Resources.MergedDictionaries.Add(dic); 

到:

Application.Current.Resources.MergedDictionaries.Clear(); 
Application.Current.Resources.MergedDictionaries.Add(dic);