在WinForms中编写的向导中使用MVC、MVP或MVVM模式?

在WinForms中编写的向导中使用MVC、MVP或MVVM模式?,winforms,model-view-controller,mvvm,wizard,Winforms,Model View Controller,Mvvm,Wizard,我在过去编写的所有WinForms向导在UI和模型之间都具有高度耦合。也就是说:单独的页面知道如何启用/禁用下一个/上一个按钮,如何对按下的下一个按钮做出反应,等等。这使得所有的测试都很难,因为要测试任何逻辑,你必须首先将大量的脚手架放在一起 我最近一直在使用MVC(以ASP.MVC的形式),我发现这很容易测试。我还和WPF玩过一场,我想我已经开始关注m-V-VM了 我正在努力解决WinForms中的m-V-p模式(即没有WPF风格的数据绑定)。特别是,我需要实现一个向导 每页都有控制器吗?管理

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

我最近一直在使用MVC(以ASP.MVC的形式),我发现这很容易测试。我还和WPF玩过一场,我想我已经开始关注m-V-VM了

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

每页都有控制器吗?管理整个向导的视图模型?还有别的吗


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

看一看。

看一看。

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

结果非常好,而且为每个presenter类编写单元测试也非常容易


基础向导框架不使用MVVM或MVP。这只是简单的WinForms代码。

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

结果非常好,而且为每个presenter类编写单元测试也非常容易


基础向导框架不使用MVVM或MVP。这只是简单的WinForms代码。

也就是说:SCSF中的单词太多,实际示例代码不够。生成的代码不算数。另外,我还特别研究了如何将MVC/MVP/MVVM连接到向导。在阅读问题时,我不知怎么错过了向导部分-抱歉。我认为您需要更详细地描述我们所经历的高度耦合。我知道命令模式被描述为在使用向导时非常有用。也就是说:SCSF中的单词太多,实际示例代码不够。生成的代码不算数。另外,我还特别研究了如何将MVC/MVP/MVVM连接到向导。在阅读问题时,我不知怎么错过了向导部分-抱歉。我认为您需要更详细地描述我们所经历的高度耦合。我知道命令模式被描述为在使用向导时非常有用。