首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF ResourceDictionary DynamicResource

WPF ResourceDictionary DynamicResource
EN

Stack Overflow用户
提问于 2016-02-12 18:01:56
回答 1查看 332关注 0票数 0

我的问题是,我试图用不同的颜色从WPF的DrawingImage中加载几个ResourceDirectory。用StaticResourceDynamicResource都不能分辨出这些颜色。

所讨论的ResourceDirectory从来都不是WPF环境的一部分(对于任何窗口或应用程序都是如此),因为在我的情况下,这是行不通的。相反,字典是加载在代码中,在那里管理任何查询。

现在的问题是我基本上有三本字典。两个用于颜色(两个不同的调色板)和一个包含DrawingImage定义。两个颜色字典都包含有相同名称的资源。

因此,我的计划是加载DrawingImage字典,一旦完成,就将所需的颜色字典作为合并字典应用。失败了。我还尝试将这两本字典作为合并字典添加到父词典中。那也失败了。

我试着用两种方式加载字典:

代码语言:javascript
复制
Dim palette As New ResourceDictionary()
palette.Source = New Uri("...", UriKind.Relative)

代码语言:javascript
复制
Dim location As New Uri("...", UriKind.Relative)
Dim palette = DirectCast(Application.LoadComponent(location), ResourceDictionary)

两者产生相同的结果。如果使用DynamicResource,则加载资源字典,而这些资源都解析为null。我认为问题在于DynamicResource如何查找资源的方法。但是,我没有找到一种方法来更改/重定向这些查找到我的资源字典。

有什么方法可以改变DynamicResource的查找吗?或者还有其他方法来存档我需要的东西?

有一点:由于我开发了一个运行在更大的第三方应用程序中的库,所以我不能使用全局应用程序资源字典。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 09:24:03

因此,这个问题是有解决办法的。如果应用了搜索上下文,则可以使用DynamicResource。有两个类用作此扩展的搜索上下文。FrameworkElementFrameworkContentElement.

解决方案是创建两个类之一,并将所有相关字典应用到这些类中。一旦完成,DynamicResource就被正确地解决了。

代码语言:javascript
复制
Dim drawings As New ResourceDictionary()
drawings.Source = New Uri("...", UriKind.Relative)

Dim palette As New ResourceDictionary()
palette.Source = New Uri("...", UriKind.Relative)

result.MergedDictionaries.Add(drawings)
result.MergedDictionaries.Add(palette)
Dim fe As New FrameworkElement()
fe.Resources = result

一旦将字典分配给FrameworkElement的资源,获取资源就会像预期的那样工作。

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

https://stackoverflow.com/questions/35369308

复制
相关文章

相似问题

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