如何创建一个功能丰富的用户界面Windows应用程序,例如Photo Shop。
我正在寻找一个针对C# WinForms的干净MVC教程。(不是 ASP.NET MVC。)
作为Windows平台的新手,大多数MSDN和互联网教程基本上将所有内容都放入Form类中。进一步地,默认事件被处理在窗体内部,而不是发送给控件/模型,后者又会改变视图的状态。
或者说,在Windows应用程序中首选的方法是什么?
如何创建一个功能丰富的用户界面Windows应用程序,例如Photo Shop。
我正在寻找一个针对C# WinForms的干净MVC教程。(不是 ASP.NET MVC。)
作为Windows平台的新手,大多数MSDN和互联网教程基本上将所有内容都放入Form类中。进一步地,默认事件被处理在窗体内部,而不是发送给控件/模型,后者又会改变视图的状态。
或者说,在Windows应用程序中首选的方法是什么?
Derick Bailey(通过Los Techies)已经发表了一些关于在WinForms应用程序中实现MVP模式的精彩文章(以及完整的演示源代码),并添加了几个其他优秀的模式到混合中(应用程序控制器,事件聚合器)。
这项工作受到Jeremy D Miller的一系列题为“构建自己的CAB”的文章的启发。
对于Windows应用程序,Windows操作系统无意中成为控制器的一部分。
模型可以订阅各种事件/消息(例如鼠标单击、移动、窗口重新调整大小、按钮单击等)。当它完成其更改-更新-处理后,通过重绘操作更新视图。
Windows操作系统在这里充当控制器,因为它既向模型发送消息(例如鼠标单击),也向视图发送消息(告诉它某个窗口部分是脏的,需要重绘)。
当然,对于任何商业应用程序,您都应该实现自己的模型和文档结构,并将它们与相应的WinForm对象分开。
在.net中,这并不那么清晰,因为模型和视图部分只有一个文件。在MFC中,这非常清晰 - 有一个CDocument类及其相应的CView类。
与其使用MVC模式,对于Windows应用程序而言,了解Windows消息体系结构以及如何处理它们会更有帮助。