WinForms应用程序中的控制器/静态状态类 – 放在哪里?

我正在编写一个WinForms应用程序,并希望拥有一个“MVC类型”设计。 实际上它更像是MVP或MVVM。

计划是让一个中央控制器完成所有实际工作,这样表单只会渲染出ViewModel并处理用户输入,但实际执行某些操作的所有内容都会通过Controller。

我只是想知道这是不是一个好主意,在哪里放置控制器? 目前的想法是在Program.cs中初始化一个静态类(在一些依赖项中发送,比如IMyDatabaseRepository),这样它就会保留一个委托用户界面和模型之间工作的控制器。

正如您可能猜到的,我来自Web背景,并且对WinForms架构缺乏经验。 以前,我的MainForm是Controller类,包含所有状态变量,这显然意味着我的MainForm是我的应用程序,而不仅仅是用户界面的一部分。

好问题迈克尔!

以下是一些链接:

  • Sacha Barber的WPF MVVM VS项目模板
  • Codehaject.com上的Sacha文章系列
  • 关于这个Wordpress博客的好文章

希望这些能帮助您正确构建项目!

我不知道这是否是更好的方法,但我正在使用Structuremap创建我的控制器和数据库实例。
主窗体中没有真正的代码 – 它只是加载第一组控件然后启动控制器。 表单上的用户控件使用StructureMap来访问控制器。
我的项目是常规WinForms而不是WPF,是我第一次使用WinForms的MVC模式。

您可以查看WAF Windows Forms Adapter下载。 它附带了BookLibrary示例应用程序,它使用Controller / MVVM设计和Windows Forms。