2017-07-18 50 views
2

我需要一些WPF資源字典的幫助。我有多個.dll,每個DLL中有一個或多個資源字典。問題是我不知道DLL中的資源字典的名稱或位置。現在我正在尋找一種方法來在我的Main.xaml中添加所有這些資源字典在後面的代碼中。將多個資源字典動態添加到我的WPF項目中

也許在裝配中有反射的東西?

ResourceDictionary resourceDictionary = new ResourceDictionary(); 
resourceDictionary.Source = new Uri("Dictionary1.xaml", UriKind.Relative); 

ResourceDictionary resourceDictionary2 = new ResourceDictionary(); 
resourceDictionary.Source = new Uri("Dictionary2.xaml", UriKind.Relative); 

resourceDictionary2.MergedDictionaries.Add(resourceDictionary); 

Resources.MergedDictionaries.Add(resourceDictionary2); 

但它只添加1資源字典...你能幫我嗎?

+0

是的,somehting在我的項目中是越野車。我做了一個新的乾淨的項目,並嘗試了不同的解決方案,並從虎斑中解決了問題。謝謝! – OneByT

回答

1

試試這個:

ResourceDictionary resourceDictionary = new ResourceDictionary 
{ 
    Source = new Uri("Dictionary1.xaml", UriKind.Relative) 
}; 

ResourceDictionary resourceDictionary2 = new ResourceDictionary 
{ 
    Source = new Uri("Dictionary2.xaml", UriKind.Relative) 
}; 

Application.Current.Resources.MergedDictionaries.Add(resourceDictionary); 
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary2); 
+0

我試過這個,它沒有工作... – OneByT

+0

你有什麼異常嗎? – tabby

+0

不僅字典2被合併 – OneByT

1

我覺得你的邏輯是錯誤的。嘗試

//Load #1 ResourceDictionary 
ResourceDictionary resourceDictionary = new ResourceDictionary(); 
resourceDictionary.Source = new Uri("Dictionary1.xaml", UriKind.Relative); 

//Load #2 ResourceDictionary 
ResourceDictionary resourceDictionary2 = new ResourceDictionary(); 
resourceDictionary2.Source = new Uri("Dictionary2.xaml", UriKind.Relative); 

//Merge #1 & #2 
resourceDictionary2.MergedDictionaries.Add(resourceDictionary); 

//Add to Resources 
Resources.MergedDictionaries.Add(resourceDictionary2);