带WinForms的MVVM/表示模型

带WinForms的MVVM/表示模型,winforms,data-binding,mvvm,model,presentation,Winforms,Data Binding,Mvvm,Model,Presentation,我目前正在开发一个brownfield应用程序,它是用winforms编写的, 作为在更高版本中使用WPF的准备,out团队计划至少使用 MVVM/表示模型,并将其与winforms绑定 我探索过这个主题,包括这个网站上的帖子(我非常喜欢), 简而言之,wpf的主要优势是: 将控件绑定到xaml中的属性 将命令绑定到viewmodel中的命令对象 第一个特性很容易实现(在代码中),或者使用通用控件绑定器,绑定表单中的所有控件 第二个功能更难实现,但如果从所有控件继承并添加一个命令属性(由内部

我目前正在开发一个brownfield应用程序,它是用winforms编写的, 作为在更高版本中使用WPF的准备,out团队计划至少使用 MVVM/表示模型,并将其与winforms绑定

我探索过这个主题,包括这个网站上的帖子(我非常喜欢), 简而言之,wpf的主要优势是:

  • 将控件绑定到xaml中的属性
  • 将命令绑定到viewmodel中的命令对象
第一个特性很容易实现(在代码中),或者使用通用控件绑定器,绑定表单中的所有控件

第二个功能更难实现,但如果从所有控件继承并添加一个命令属性(由内部事件(如单击)触发),该属性将绑定到ViewModel中的命令实例

我目前意识到的挑战是:

  • 实现commandmanager(必要时将触发命令的CanInvoke方法)
  • winforms只支持一个级别的数据绑定:datasource、datamember和wpf更灵活
在尝试实现此设计模式时,我是否缺少winforms与wpf相比所缺少的任何其他主要功能

我相信你们中的许多人都会推荐某种MVP模式,但MVVM/表示模型是我的选择,因为我希望将来能够支持WPF

提前感谢,, Erik.

请看一看。它是一个用于Winforms、WPF和Silverlight的开源库,可在数据更改时保持控件的最新状态。您现在可以开始在Winforms中使用它,然后在不更改数据模型或查看模型代码的情况下过渡到WPF


不幸的是,它没有解决Winforms命令绑定问题。您的按钮单击事件不会从Winforms移植到WPF。但它确实解决了数据绑定问题。

您可能会发现很有趣。它显示了如何应用模型视图模型(MVVM)Windows窗体应用程序中的模式。适配器实现为Windows窗体中缺少的命令支持提供了解决方案。

您是否考虑过只使用ElementHost将新WPF内容放入现有WinForm应用程序中?我可能会在某个时候这样做……我想到了另一个挑战:DataTemplates。。我将使用usercontrol并将其绑定到我的viewmodel上的一个对象上,而不是使用DataItemlates…:))我将在下周开始制作一个原型,有人对我的结果感兴趣吗?这篇文章可能对那些寻找CommandManager实现的人有用: