我不开发太多的台式/Windows形式应用程序,但它已经发生,我认为可能有一些好处,以使用的视(模型图控制器)模式适用于Windows的形式。净发展。

有任何人实施软Windows形式?如果是这样,你有任何的技巧的设计?

有帮助吗?

解决方案

我做了什么在过去是使用类似的东西, 模型视主持人.

[注:本文使用的可在网。看到它现在,你需要下载信息交换所机制,然后视文件的性质并击解锁。然后你可以打开的信息交换所机制和查找的文章。万分感谢,微软! 叹息]

该形式是查看,我有一个有限或没有接口。所有处理发生在主持人,这仅仅是一类。形式创建一个新的主持人,并将自己作为主讲者的很高兴.这种方式用于测试可以通过在一个假的,显示,相反,然后送命令到它从主持人和检测的结果。

如果我们要使用一个全面的模型图控制器,我想我愿意做这样的:

  • 该形式是的 .它发出的命令的模式,引发事件,它控制器可以订阅,并且赞同的事件模型。
  • 控制器 是一类赞同这样的观点发生的事件和发送命令景和模型。
  • 模型 引发的事件,图赞同。

这将符合 经典的视图.最大的缺点是,与事件,它可以很难告诉谁的订阅是什么。MVP式使用的方法,而不是事件(至少我实现的话)。当形式/视图引发事件(例如someButton.点击),将形成简单的电话的方法上的主持人,以运行逻辑的。图和模型没有任何直接的连接;他们都必须要经过的主持人。

其他提示

嗯,实际上Windows Forms实现了“自由风格”。 MVC的版本,就像一些电影实现了一些糟糕的“自由风格”。解读一些经典书籍(罗密欧与朱丽叶的想法)。

我不是说Windows Forms的实现很糟糕,只是......不同。

如果您使用Windows窗体和适当的OOP技术,并且可能使用像EntitySpaces这样的ORM来进行数据库访问,那么您可以这样说:

  1. ORM / OOP基础架构是模型
  2. 表格是观点
  3. 事件处理程序是Controller
  4. 尽管同一个对象所代表的View和Controller都使代码分离代码变得更加困难(在从Microsoft.Windows.Forms.Form派生的类中插入“GTK +视图”并不容易)

    如果你足够小心,你能做什么。通过在事件处理程序中编写GUI相关内容以及在单独的类中编写所有其他业务逻辑,将表单代码完全与控制器/模型代码分开。在这种情况下,如果您想使用GTK +编写另一个View层,您只需要重写GUI代码。

Windows Forms不是从头开始设计的,而是使用MVC。你有两个选择。

首先,您可以推出自己的MVC实现。搜索结果 其次,您可以使用为Windows Forms设计的MVC框架。

第一个很容易开始做,但是你得到的越多,它就越复杂。我建议寻找一个好的,预先存在且经过良好测试的MVC框架,旨在与Windows Forms一起使用。我相信这篇博客文章是一个不错的起点。

对于任何刚开始的人,如果你有选择,我建议你跳过Windows Forms并针对WPF进行开发。这是一个更好的创建UI的框架。为WPF开发了许多MVC框架,包括这个那一个

根据微软的说法,@ jasonbunting提到的UIP应用程序块是“存档的”。相反,请查看智能客户端应用程序块或更新的< a href =“http://msdn.microsoft.com/en-us/library/aa480482.aspx”rel =“nofollow noreferrer”>智能客户端软件工厂,它支持WinForms和WPF SmartParts。

检查 用户界面流程(UIP)应用程序块 。我不太了解它,但几年前看了它。可能有更新的版本,请查看。

&quot; UIP应用程序块基于模型 - 视图 - 控制器(MVC)模式。“

查看MS模式和实践智能客户端应用程序块,其中包含一些指导和类,可引导您在Windows窗体中实现模型视图演示器模式 - 查看包含的参考应用程序。

对于WPF,棱镜项目正在取代

软件工厂方法是学习最佳实践的好方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top