4

我正在为 WPF 应用程序使用托管可扩展性框架。我为所谓的扩展点定义了接口,这些接口为应用程序提供了新功能。

其中一些功能可能是使用某些数据模板显示数据,这是您可能希望在 xaml 资源文件中指定的内容。

如果我在应用程序编译时未知的程序集中定义了这些扩展点之一(即普通语言的插件),但我仍然想将插件的资源与应用程序的资源合并,我将如何去做?

所有示例显示如何使用 pack URI 表示法状态执行此操作,当您引用的程序集在编译时已知时,该状态是解决方案。当您在编译时不熟悉程序集时,如何实现相同的目标?

4

2 回答 2

4

您需要通过代码或约定获取要合并的资源字典的详细信息。详细信息可以是资源字典的名称或ResourceDictionary实例本身。

在后一种情况下,您拥有ResourceDictionary实例,因此您可以将其合并到您的Application- 级别(或任何合适的级别)资源中。

在前一种情况下,您需要使用程序集的名称构造一个适当的包 URI(您可以通过调用从扩展中获取extension.GetType().Assembly)。然后创建一个将ResourceDictionarySource设置为包 URI。最后,将其合并到资源树的适当级别。

于 2009-09-09T12:53:04.297 回答
0

以下是如何使用 MEF(在本例中为数据模板)将资源字典从部件中提取到应用程序资源中。我基于SoapBox Core为视图导入资源字典的这种方法。

于 2009-09-10T02:01:56.800 回答