我有一个桌面 WPF 应用程序,它从 Web 加载它的资源,这使我们能够做不同的事情,比如......如果我们愿意,可以在假期前后添加一个圣诞主题。要加载主题,我只需将应用程序当前资源字典替换为我们自己的资源字典,就像这样。
ResourceDictionary resources = null;
System.Net.WebClient client = new System.Net.WebClient();
using (Stream s = client.OpenRead("http://www.mywebsite.com/MyXAMLFile.xaml"))
{
try
{
resources = (ResourceDictionary)XamlReader.Load(s);
}
catch
{ }
}
Application.Current.Resources = resources;
好吧,我们到了我想将一些资源分成不同文件的地步,而不是只使用一个包含所有内容的大资源文件。我认为这将是相当简单的只是使用合并的资源。我认为对上面的代码进行简单的修改就可以使它工作,但事实证明它没有。这是我期望我必须做的。
//replace the last line
Application.Current.Resources = resources;
//with this line
Application.Current.Resources.MergedDictionaries.Add(resources);
当应用程序运行时,它只是使用普通样式,并没有考虑到我添加的合并资源。我在这里做错了什么?我如何能够在运行时动态添加合并的资源(和多个)并让它们正常工作?
谢谢,凯尔