C# 寻找干净的WinForms MVC教程#

C# 寻找干净的WinForms MVC教程#,c#,winforms,user-interface,methodology,model-view-controller,C#,Winforms,User Interface,Methodology,Model View Controller,如何创建一个丰富的用户界面Windows应用程序,例如照片商店 我在某处寻找WinForms和C的干净MVC教程。(不是ASP.NET MVC。) 在Windows平台上是新的;大多数MSDN和internet教程基本上都将所有内容放入表单类中。进一步的默认事件在表单内部处理,而不是将事件发送到控件/模型,从而更改视图的状态 或者Windows应用程序的首选方法是什么?可能值得一看模型视图模型(如果您特别感兴趣/乐意使用WPF) 它经过特别调整,可以与WPF和Silverlight一起使用,并利

如何创建一个丰富的用户界面Windows应用程序,例如照片商店

我在某处寻找WinForms和C的干净MVC教程。(不是ASP.NET MVC。)

在Windows平台上是新的;大多数MSDN和internet教程基本上都将所有内容放入表单类中。进一步的默认事件在表单内部处理,而不是将事件发送到控件/模型,从而更改视图的状态


或者Windows应用程序的首选方法是什么?

可能值得一看模型视图模型(如果您特别感兴趣/乐意使用WPF)

它经过特别调整,可以与WPF和Silverlight一起使用,并利用数据绑定将所有内容粘合在一起


网络上有很多资源可以找到更多信息,包括John Gossman的,还有Josh Smith的一篇文章,他还有其他与MVVM相关的资源。

对于Windows应用程序,Windows操作系统无意中成为控制器的一部分

模型可以订阅各种事件/消息(例如,鼠标单击、移动、窗口大小调整、按钮单击…)。完成更改更新处理后,视图将通过重画操作进行更新

Windows操作系统在此处充当控制器,因为它既向模型发送消息(如鼠标单击),也向视图发送消息(告诉视图部分Windows脏了,需要重新绘制)

当然,对于任何商业应用程序,您都可以实现自己的模型和文档结构,并将它们与相应的WinForm对象分开

在.net中,这不是很清楚,因为模型和视图部分只有一个文件。在MFC中,这一点非常清楚——有一个CDocument类及其相应的CView类

对于Windows应用程序,它有助于理解Windows消息传递体系结构以及如何处理它们,而不是MVC模式

Derick Bailey(通过Los Techies)已经(和完整的演示源代码)在WinForms应用程序中实现了MVP,并在混合中添加了一些其他好的模式(应用程序控制器、事件聚合器)


这项工作的灵感来自于

问题是WinForms可能不是MVC的最佳工具包,因为在Windows窗体中,控制器、视图和模型并没有真正分开。我想你在WPF会有更多的运气,这在这个意义上是更灵活的。你可能想在boo Bird出来之前看看这里。是否可以重新激活一个问题?我们现在是在2012年,我也在寻找一个好的简单的Winform MVC示例。问问它,请参考评论您是否认为Winforms在大多数情况下都是足够的。如果消息传递正确无误?是。但是,如果您有需要更新多个表单等情况,请务必考虑。在这种情况下,将模型划分为不同的类可能是有意义的,并且可能需要实现一个控制器来协调模型类和表单对象。我不同意以下说法:“对于Windows应用程序,Windows操作系统无意中成为控制器的一部分。”即使WinForms不强制使用特定模式(MVC/MVP/MVVM/等),您仍然可以使用模式请看balioune_ba和重构的Paladin for patterns and frameworks的链接。也就是说,MVC可能不是WinForms的最佳模式,WPF提供了一种更自然的方式来实现MV*模式。@Ryan,如果你至少读过整篇文章或s5804问题的答案的话。文章说Windows操作系统是控制器的一部分。这将一直有效,直到操作系统附带的windows.h文件具有windows消息的定义。我确实阅读了整篇文章,但我仍然恭敬地表示不同意。控制器就是你所能理解的。如果你不将控制器绑定到操作系统,那么操作系统就无关紧要了。这都是关于设计的;这就是为什么MVC框架存在于许多dif上的原因不同的平台,尽可能不与操作系统功能绑定。最后,这是C#/WinForms,而不是带有#include的Win32。有WinForm MVC框架。另一方面,如果你是说WinForms的MVC框架是Windows特定的,而不是跨平台的,我可以同意。Josh Smith的文章真的很好