【问题标题】:Writing dot net desktop application with MVC design pattern使用 MVC 设计模式编写点网桌面应用程序
【发布时间】:2011-01-05 19:15:31
【问题描述】:

我得到了一个使用 C# 制作桌面应用程序的任务。它必须使用 MVC 设计模式来完成,但我找不到任何教程可以展示如何使用基于桌面的应用程序来完成它。我能找到的所有教程都展示了如何为 web (asp.net) 做这件事。

所以我想知道是否有人可以向我推荐一本这样做的书或在线教程?

【问题讨论】:

标签: c# database model-view-controller desktop


【解决方案1】:

我总是通过这样做来学习这是一个非常基本的示例。 Web 或 Windows,没关系...

型号

// basic template for what your view will do
public interface IProgram
{
    public string FirstName { get; set; }
}

查看

public class Program : IProgram
{
    ProgramController _controller;
    public Program()
    {
        // pass itself to the controller
        _controller = new ProgramController(this);
    }

    public string FirstName 
    {
        get { return firstNameTextBox.Value; }
        set { firstNameTextBox.Value = value; }
    }
}

控制器

public class ProgramController
{
    IProgramView _view;
    public ProgramController(IProgramView view)
    {
        // now the controller has access to _view.FirstName
        // to push data to and get data from
        _view = view;
    }
}

您可以通过这种方式绑定任何成员,例如事件

【讨论】:

    【解决方案2】:

    既然这是作业,我相信您老师,更重要的是您自己,渴望学习 MVC 背后的技巧。因此,虽然检查 MVC 框架可能会有所帮助,但我建议您自己实现基本功能。

    也就是说,先看看Wikipedia's article(不幸的是,这不是那么好),然后检查Microsoft's take

    一旦你掌握了这些概念,试着实现一个基本的三元组来做“一些事情”,没什么特别的。如果您有疑问,请返回 SO,以便我们届时解决。并且不要忘记 SO 的新 chat functionality

    【讨论】:

      【解决方案3】:

      您可能会考虑几种不同的途径。

      • 您可以考虑自己实现该模式。为了从头开始实现该模式,您确实需要了解 MVC 试图解决的问题。
        • 考虑阅读设计模式。我知道 Head First Design Patterns 包含对 MVC 模式的介绍。
        • 您可以考虑探索 ASP.NET MVC。即使它适用于 Web 而不是桌面,但了解 ASP.NET MVC 使用 MVC 模式解决的问题将有助于您了解如何最好地实现桌面解决方案。
      • 看看有没有人用 WinForms 实现了 MVC
      • 您还可以考虑寻找有关使用 WPF 或 Silverlight 实现 MVC 模式的建议。
        • 尽管围绕 WPF 和 Silverlight 的常见流行语模式是 MVVM(模型-视图-视图模型),但有些人仍然更喜欢将 MVC 实现与这些技术结合使用。
        • 事实上,即使在使用 MVC 模式时,如果您有意识地创建视图模型来伴随您的视图,那么您本质上就是一个“M-V-VM-C”模式,可确保您的视图只知道来自模型的相关数据到那个特定的观点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多