首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码中的ResourceDictionary替换

代码中的ResourceDictionary替换
EN

Stack Overflow用户
提问于 2012-02-07 21:31:42
回答 1查看 523关注 0票数 0

我需要从net下载RecourceDictionary并将其连接到项目。

因此,在App.xaml中,我有一些类似当前ResourceDictionary的存根:

代码语言:javascript
复制
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

然后,我将新的ResourceDictionary (ResourceDictionary2.xaml)下载并存储到IsolatedStorage。然后我需要用新的替换当前的。

实际上,如果这个文件在项目文件夹中,我会这样做:

代码语言:javascript
复制
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:

代码语言:javascript
复制
newDict.Source = new Uri("isostore:/ResourceDictionary2.xaml");

但它不起作用。

EN

回答 1

Stack Overflow用户

发布于 2012-02-08 03:55:13

首先,您应该使用我的通用独立存储实用程序found here

然后执行以下操作:

代码语言:javascript
复制
ResourceDictionary isoResourceDictionary = (ResourceDictionary)IsolatedStorage_Utility.Load<ResourceDictionary>(filename);
appResources.MergedDictionaries.RemoveAt(0);
appResources.MergedDictionaries.Add(isoResourceDictionary);

下一个问题是你让在InitializComponents之前做这件事,因为Silverligh/WP7 只允许支持StaticResources。解决这个问题的唯一方法是刷新当前页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9177146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档