我有一个导入 MEF 组件,当导入向导打开时会动态加载该组件。一旦用户选择了她想要处理的导入类型,对导入向导对话框的控制就会传递给所选的导入组件。
当然,导入组件需要向向导对话框提供资源(例如DataTemplate
s)。目前这是通过以下方式实现的DataTemplateSelector
由导入组件提供。他们访问本地ResourceDictionary
导入组件的装配。
但正如你可以想象的,这很乏味:我必须为每个添加代码DataTemplate
提供,WPF 不会自动使用该权利DataTemplate
按类型ViewModel
正在显示。
以前有人解决过这个问题吗?你们如何在插件环境中提供资源?
感谢您提前提供的任何帮助。
此致
我不知道在哪里找到这个小技巧,但您可以做的一件事是在编写外部程序集时动态导入资源字典。
在每个包含资源的程序集中,您可以通过代码隐藏和注释来导出一个或多个 ResourceDictionary 对象,如下所示:
[Export(typeof(ResourceDictionary))]
public partial class Resources : ResourceDictionary
{
public Resources()
{
InitializeComponent();
}
}
现在您需要一个组件来解决[ImportMany] IEnumerable<ResourceDictionary> resourceDictionaries
并做这样的事情:
//Merge exported resource dictionaries from all composed sources into the application
foreach (var resourceDictionary in resourceDictionaries)
{
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)