【问题标题】:Using the MVC, MVP or MVVM pattern for a wizard written in WinForms?为用 WinForms 编写的向导使用 MVC、MVP 或 MVVM 模式?
【发布时间】:2010-11-11 06:49:31
【问题描述】:

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

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

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

每个页面都需要一个控制器吗?管理整个向导的视图模型?还有什么?

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

【问题讨论】:

    标签: winforms model-view-controller mvvm wizard


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 即:SCSF中的单词太多,实际示例代码不够。生成的代码不算数。另外,我正在专门研究如何将 MVC/MVP/MVVM 连接到 wizard
      • 我在阅读问题时不知何故错过了向导位 - 抱歉。我认为您需要更详细地描述正在经历的高度耦合。我知道命令模式被描述为在使用向导时很有用。
      猜你喜欢
      • 2011-03-05
      • 2010-11-16
      • 2011-01-25
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多