【问题标题】:Adding multiple Resource Dictionaries dynamic to my WPF-Project将多个资源字典动态添加到我的 WPF 项目
【发布时间】:2017-12-22 21:45:28
【问题描述】:

我需要一些关于 WPF 中资源字典的帮助。我有多个 .dll,每个 dll 中有一个或多个资源字典。问题是我不知道 DLL 中资源字典的名称或位置。现在我正在寻找一种将所有这些资源字典添加到我的 Main.xaml 中的代码后面的方法

也许在程序集中有一些反射?

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 个资源字典...你能帮帮我吗?

【问题讨论】:

  • 是的,我的项目中有一些问题。我做了一个新的干净项目并尝试了不同的解决方案,并且来自 tabby 的解决方案有效。谢谢!

标签: c# wpf xaml dictionary


【解决方案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 );

【讨论】:

  • 你有什么异常吗?
【解决方案2】:

我认为你的逻辑是错误的。试试

//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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多