【问题标题】:Get the View & ViewModel from a plugin从插件中获取 View 和 ViewModel
【发布时间】:2014-04-30 09:24:40
【问题描述】:

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

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

我的问题是:如何在我的列表中添加插件的视图模型时保持这个绑定?如何使其视图出现在我的设计器中?

【问题讨论】:

    标签: c# wpf plugins data-binding mvvm


    【解决方案1】:

    这是一个有趣的问题......并且像往常一样有很多方法可以完成它。

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

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

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

    有关视图优先、视图模型优先、视图视图模型结合等方面的更多信息的 google。

    或者

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

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

    HTH

    【讨论】:

      【解决方案2】:

      感谢@Silverfighter 的回答!它让我的事情更清楚了!

      我发现一篇非常有趣的文章似乎适合我的问题

      解决办法在这里:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多