itsaboutcode
itsaboutcode

Reputation: 25099

Writing dot net desktop application with MVC design pattern

I got an assignment to make a Desktop application using C#. It has to be done using MVC design pattern, but I can't find any tutorial which can show how to do it with Desktop based application. All the tutorials which I can find show how to do it for web (asp.net).

So I was wondering if someone can suggest me a book or online tutorial which is doing this?

Upvotes: 7

Views: 22265

Answers (3)

Ben McCormack
Ben McCormack

Reputation: 33108

There are a few different avenues you might look at.

  • You might consider implementing the pattern yourself. In order to implement the pattern from scratch, you really would need to understand what MVC is trying to solve.
    • Consider reading about Design Patterns. I know that Head First Design Patterns includes an introduction to the MVC pattern.
    • You may consider exploring ASP.NET MVC. Even though it is for the web and not the desktop, understanding what problems ASP.NET MVC is solving by using the MVC pattern will help you to understand how to best implement a solution for the desktop.
  • See if anyone has implemented MVC with WinForms
  • You also might consider looking for suggestions on implementing the MVC Pattern with WPF or Silverlight.
    • Although the common buzzword pattern surrounding WPF and Silverlight is MVVM (Model-View-ViewModel), some people still prefer to use an MVC implementation with these technologies.
    • In fact, if you consciously create View Models to accompany your views even when using the MVC pattern, you've essentially an "M-V-VM-C" pattern that ensures that your views only know about data from the model that pertains to that particular view.

Upvotes: 1

Bruno Brant
Bruno Brant

Reputation: 8564

Since this is homework, I believe that you teacher and, more importantly, yourself, desire to learn the tricks behind MVC. So, while checking MVC Frameworks might help, I recommend you implement basic functionality on your own.

That said, take a look at Wikipedia's article first (which, unfortunately isn't that good), then check Microsoft's take on it.

Once you grasp the concepts, try implement a basic triplet that does "something", nothing really fancy. If you have doubts, come back to SO so that we can solve then. And don't forget the new chat functionality of SO.

Upvotes: 3

hunter
hunter

Reputation: 63522

I always learned by doing so here's a very basic example. Web or Windows, doesn't matter...

Model

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

View

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

Controller

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

You can bind any members this way, such as events

Upvotes: 4

Related Questions