可能是重复问题:
Windows Forms的UI设计模式(类似于WPF的MVVM)
在WinForms中应该使用MVVM吗?如果可以,有什么优势可以超越MVP?
可能是重复问题:
Windows Forms的UI设计模式(类似于WPF的MVVM)
在WinForms中应该使用MVVM吗?如果可以,有什么优势可以超越MVP?
我认为这里有两个答案......一个是"我应该吗?"的答案, 另一个是“我能吗?”的答案。
对于"我能吗",这完全是可能的。MVVM只需要一个可以绑定到视图模型的视图。由于WinForms支持绑定,因此这确实是可能的。在MVVM世界中,您可能需要编写一些代码使绑定更加有用,但至少从理论上讲,它是可能的。如果运作良好,好处将是相当大的。你可以确保你的WinForms "View"除了创建可视对象和绑定它们(在代码中,而不是像XAML中那样声明)之外没有任何UI行为。WinForms对象非常难以测试,而ViewModels很容易测试。
至于你真正的问题:“我应该吗?”,那就更多地成为一个项目层面的决定。你的目标是什么?如果您要使某些相当复杂的UI逻辑可测试,则可以至少考虑一下。幸运的是,还有其他模式(例如Model-View-Presenter),这些模式具有更多的社区支持,也会让您编写可测试的“presenter”类。与Presenter相比,我发现ViewModels显着更容易编写单元测试,但我认为这是个人喜好。
仅作为一种旁白,MVVM模式主要是"Presenter Model"模式的另一个名称。您可以查看是否有人在WinForms UI上使用"Presenter Model"取得了成功。
祝好运!
MVVM特别适用于WPF和Silverlight中的标记+代码和无外观模型。我不建议在WinForms应用程序中使用它,因为我认为这会导致过度杀伤。我在WinForms应用程序中没有看到任何MVP之上的优点。然而在WPF和Silverlight中,MVVM始终比MVP更受欢迎。
在网上了解MVVM是什么以及为什么会出现。这应该进一步澄清问题。
我不相信MVVM可以在winforms中完成(至少不是没有大量的黑客攻击)。MVVM将视图(您的表单)与视图模型(您的逻辑)分开。
它可以在WPF中完成的原因是因为 WPF允许通过XAML数据绑定松散耦合视图和视图模型。这使得ViewModel不需要知道任何关于视图的信息也能够正常工作。这是一篇好的文章介绍了MVVM的基础知识,我相信它会解决很多问题。
MVVM是专门为WPF创建的,以利用WPF的绑定和命令等功能。Windows Forms没有这些功能(*), 因此尝试将MVVM模式应用于Windows Forms应用程序并不真正有意义...您应该使用MVC或MVP。
(*) 它实际上具有一些基本的数据绑定支持,但不如WPF强大...