我需要从网上下载RecourceDictionary并将其连接到项目。
所以在App.xaml中我有一个类似于当前ResourceDictionary的存根:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后我下载并将新的ResourceDictionary(ResourceDictionary2.xaml)存储到IsolatedStorage。然后我需要用新的替换当前的那个。
事实上,如果这个另一个文件正好在项目文件夹中,我会这样做:
var newDict = new ResourceDictionary {
Source = new Uri("/WP7ResourceDictionaryTest;component/ResourceDictionary2.xaml", UriKind.Relative)
};
ResourceDictionary appResources = App.Current.Resources;
appResources.MergedDictionaries.RemoveAt(0);
appResources.MergedDictionaries.Add(newDict);
此代码有效。
所以问题是:如何用IsoStorage中的文件替换当前的RecourceDictionary? 我试着像这样设置Uri:
newDict.Source = new Uri("isostore:/ResourceDictionary2.xaml");
但它不起作用。
答案 0 :(得分:1)
首先,您应该使用找到的here
我的通用隔离存储实用程序然后执行以下操作:
ResourceDictionary isoResourceDictionary = (ResourceDictionary)IsolatedStorage_Utility.Load<ResourceDictionary>(filename);
appResources.MergedDictionaries.RemoveAt(0);
appResources.MergedDictionaries.Add(isoResourceDictionary);
下一个问题是你 HAVE 在InitializComponents之前执行此操作,因为Silverligh / WP7 ONLY 允许使用StaticResources。解决此问题的唯一方法是刷新当前页面。