winforms - 为用 WinForms 编写的向导使用 MVC、MVP 或 MVVM 模式?

标签 winforms model-view-controller mvvm wizard

我过去编写的所有 WinForms 向导都在 UI 和模型之间存在高度耦合。也就是说:各个页面都知道启用/禁用下一个/上一个按钮,如何对按下下一个按钮使用react等。这使得测试变得困难,因为要测试任何逻辑,你必须先把很多脚手架放在一起。

我最近一直在使用 MVC(以 ASP.MVC 的形式),我发现它很容易测试。我也玩过 WPF,我想我正在了解 M-V-VM。

我正在努力解决 WinForms 中的 M-V-P 模式(即没有 WPF 样式的数据绑定(bind))。特别是,我需要实现一个向导。

我每页都有一个 Controller 吗?管理整个向导的 View 模型?还有什么?

这是在 C# 中的 WinForms(不是 WPF)中。 .Net 2.0 首选。

最佳答案

最后,我选择了 MVVM 和 MVP 之间的选择,混合使用了 WinForms 数据绑定(bind)和 View 回调接口(interface)。我猜它比 MVVM 更接近 MVP。每个页面都有一个 viewmodel/presenter,向导本身有自己的 viewmodel/presenter 来管理流程(例如,某些选项会跳过后面的向导页面)。

结果非常好,并且为每个演示者类编写单元测试相当容易。

底层向导框架不使用 MVVM 或 MVP。这只是普通的 WinForms 代码。

关于winforms - 为用 WinForms 编写的向导使用 MVC、MVP 或 MVVM 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136032/

相关文章:

java - 使用 taglib 有什么好处?

javascript - Controller 操作不显示错误,我看不出出了什么问题

c# - twoWay 绑定(bind)在以 ObservableCollection 作为源的 ToggleButton 中不起作用

wpf - 根据 ViewModel 中的属性值禁用 XamDataGrid 的行

c# - 使用 DataGridViewImageColumn 将图像添加到 DataGridView

c# - 如何反转 DataGridView 中的行

c# - 当已经按下第二个键时如何检测键向下/向上

firebase - FCM可以在Electron App中推送通知吗

java - 使用 ModelAndView 还是返回 String 作为 View 更好?

c# - 我需要什么来进一步限定 DataContext 以进行绑定(bind)?