获取视图&来自插件的ViewModel

时间:2014-04-30 09:24:41

标签: c# wpf plugins data-binding mvvm

我有一个使用插件的应用程序。每个插件都是在MVVM之后开发的,所以我有一个View,绑定到View-Model里面。如下图:

enter image description here

在我的应用程序中,我有一个Designer,当我在ViewModels列表中添加任何ViewModel时,它的视图将出现在Designer中。

我的问题是:如何在我的列表中添加插件的viewModel时保留此绑定?如何让它的视图出现在我的设计师中?

2 个答案:

答案 0 :(得分:3)

这是一个有趣的问题......并且总是有很多方法可以实现它。

这取决于你的插件是什么。

如果插件更集成而不是那么孤立。您应该考虑一些Factory类,例如ViewResolverViewModelResolver。他们可以采用name as stringa typetype of an interface等参数或按惯例进行工作。

目的是为视图找到VM,反之亦然作为中央服务。此服务还应该定位插件VM或导入它们,例如使用MEF。

有关更多信息,请先查看google,查看viewmodel-first,查看viewmodel婚姻等等。

或者

如果您的插件是完全充实的独立运行的组件。我建议您的宿主应用程序在其viewmodel中应该有一个组件列表,这些组件是插件。所以模型将是一个组件,无论它是否包含视图和其他所有内容,因为托管应用程序是管理组件。因此,您将拥有一个绑定到内容控件的ObservableCollection。然后content control可以作为一个整体托管插件。

这是两种可能的方式......就像我上面提到的那样,没有""在mvvm的方式,它总是取决于你的用例...... 但我希望这能引导你朝着正确的方向前进......

HTH

答案 1 :(得分:0)

谢谢@Silverfighter的答案!它让我的事情变得更加清晰!

我找到了一篇非常有趣的文章,似乎适应了我的问题

解决方案在这里:

http://www.alphablog.org/2012/05/07/simple-plugin-system-based-on-ninject-and-mvvm-light-2/