我有一个桌面WPF应用程序,可以从网上加载它的资源,这使我们可以做一些不同的事情......如果我们想要的话,可以在假日期间添加圣诞主题。要加载主题,我只需用我们自己的资源字典替换Applications当前资源字典,如下所示。
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);
运行应用程序时,它只使用普通样式,而不考虑我添加的合并资源。我在这做错了什么?如何在运行时动态添加合并资源(和多个资源)并让它们正常工作?
谢谢, 凯尔
答案 0 :(得分:0)
道歉,显然它确实有效。使用前一种方法,我已经在App.xaml中定义了默认样式,并使用了StaticResources,当我改为使用合并的字典时,我必须使用DynamicResources。我以为我删除了App.xaml中的样式,但由于我的Visual Studio解决方案中有多个项目,我删除了错误的App.xaml文件中的样式!
如果在同一个解决方案中有多个项目,那么该死的Visual Studio无法告诉您正在编辑的App.xaml文件: - )。
再次抱歉!如果我知道如何删除问题,我会。