我有一个使用插件的应用程序。每个插件都是在MVVM之后开发的,所以我有一个View,绑定到View-Model里面。如下图:
在我的应用程序中,我有一个Designer,当我在ViewModels列表中添加任何ViewModel时,它的视图将出现在Designer中。
我的问题是:如何在我的列表中添加插件的viewModel时保留此绑定?如何让它的视图出现在我的设计师中?
答案 0 :(得分:3)
这是一个有趣的问题......并且总是有很多方法可以实现它。
这取决于你的插件是什么。
如果插件更集成而不是那么孤立。您应该考虑一些Factory
类,例如ViewResolver
或ViewModelResolver
。他们可以采用name as string
,a type
,type 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/