使用WinForms的MVVM / Presentation模型

时间:2009-09-15 18:50:04

标签: winforms data-binding mvvm model presentation

我目前正在开发一个棕色字段应用程序,它是用winforms编写的, 作为在更高版本中使用WPF的准备,团队计划至少使用 MVVM / Presentation模型,并将其绑定到winforms ...

我已经探讨了这个主题,包括这个网站上的帖子(我非常喜欢), 当煮沸时,wpf的主要优点是:

  • 将控件绑定到xaml中的属性。
  • 将命令绑定到viewmodel中的命令对象。

第一个功能很容易实现(在代码中),或者使用通用控件绑定器,它绑定表单中的所有控件。

第二个功能稍微难以实现,但是如果从所有控件继承并添加命令属性(由内部事件(如click)触发),该属性绑定到ViewModel中的命令实例。

我目前所知道的挑战是:

  • 实现一个命令管理器,(它将触发命令的CanInvoke方法作为必要的。
  • winforms只支持一个级别的数据绑定:datasource,datamember,wpf更灵活。

在尝试实现此设计模式时,我是否缺少winforms与wpf相比缺少的任何其他主要功能?

我相信很多人会推荐某种MVP模式,但MVVM / Presentation模型是我的选择,因为我希望将来能够支持WPF。

提前致谢, 埃里克。

2 个答案:

答案 0 :(得分:1)

请查看Update Controls .NET。它是Winforms,WPF和Silverlight的开源库,可在数据更改时使控件保持最新。您现在可以开始使用Winforms,然后转换到WPF而无需更改数据模型或视图模型代码。

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

答案 1 :(得分:1)

您可能会发现 WAF Windows Forms Adapter 很有趣。它展示了如何在Windows窗体应用程序中应用Model-View-ViewModel(MVVM)模式。适配器实现为Windows窗体中缺少的命令支持提供了解决方案。