使用MVC设计模式编写.NET桌面应用程序

7

我得到了一个任务,需要使用C#制作桌面应用程序。它必须使用MVC设计模式完成,但我找不到任何教程可以展示如何在桌面应用程序中实现它。我能找到的所有教程都是关于Web(asp.net)的。

所以我想知道是否有人能够推荐一本书或在线教程来解决这个问题?


https://dev59.com/pHVC5IYBdhLWcg3wZwTj - Greg McNulty
3个回答

4

我通常通过实践来学习,以下是一个非常基础的例子。无论是Web还是Windows应用都适用...

模型(Model)

// 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;
    }
}

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

3

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

话虽如此,请先查看维基百科文章(不幸的是,它并不那么好),然后查看微软的观点

一旦你掌握了概念,尝试实现一个基本的三元组来做“某事”,没有什么很花哨的东西。如果你有疑问,请回到SO,这样我们就可以解决它们。别忘了SO的新聊天功能


1

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

  • 你可以考虑自己实现这个模式。为了从头开始实现这个模式,你真的需要理解MVC试图解决什么问题。
    • 考虑阅读有关设计模式的内容。我知道Head First Design Patterns包括对MVC模式的介绍。
    • 你可以考虑探索ASP.NET MVC。即使它是为Web而不是桌面设计的,但通过使用MVC模式来解决ASP.NET MVC所解决的问题,将帮助你更好地实现桌面应用程序的解决方案。
  • 看看是否有人已经在WinForms中实现了MVC
  • 你也可以考虑寻找有关在WPF或Silverlight中实现MVC模式的建议。
    • 尽管围绕WPF和Silverlight的常见流行模式是MVVM(Model-View-ViewModel),但一些人仍然喜欢使用这些技术的MVC实现。
    • 事实上,即使在使用MVC模式时,如果你有意识地创建视图模型来配合你的视图,你就会得到一个“M-V-VM-C”模式,确保你的视图只知道与该特定视图相关的模型数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接