我正在为WPF应用程序使用Managed Extensibility Framework。我为所谓的扩展点定义了接口,为应用程序提供了新功能。
其中一些功能可能是使用某些数据模板显示数据,您可能希望在xaml资源文件中指定这些模板。
如果我在应用程序编译时不知道的程序集中定义了这些扩展点之一(即普通语言的插件),但我仍然希望将插件的资源与应用程序的资源合并,我将如何进行它?
所有示例都显示了如何使用pack URI表示法状态来执行此操作,该状态是在编译时已知引用的程序集时的解决方案。当你在编译时不熟悉程序集时,你如何实现同样的目标?
答案 0 :(得分:4)
您需要 - 通过代码或约定 - 获取要合并的资源字典的详细信息。详细信息可以是资源字典的名称,也可以是ResourceDictionary
实例本身。
在后一种情况下,您拥有ResourceDictionary
实例,因此您可以将其合并到Application
级别(或任何适合的级别)资源。
在前一种情况下,您需要使用程序集的名称构建适当的pack URI(可以通过调用extension.GetType().Assembly
从扩展中获取)。然后创建ResourceDictionary
,其Source
设置为包URI。最后,将其合并到资源树的适当级别。
答案 1 :(得分:0)
Here's how to pull in resource dictionaries from parts into your application resources使用MEF(在本例中为数据模板)。我基于SoapBox Core这种导入视图资源字典的方法。