2017-07-18 11 views
2

WPFのリソースディクショナリに関するヘルプが必要です。私は複数の.dllを持っており、各dllには1つ以上のリソース辞書があります。問題は、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

はい、私のプロジェクトでは、多少のバグがありました。私は新しいクリーンなプロジェクトを行い、さまざまなソリューションを試してみました。ありがとう! – 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); 
関連する問題