UI Design Pattern for Windows Forms (like MVVM for WPF)

I have tried MVP and it seems to work great with windows forms too.
This book has an example of windows forms with MVP pattern (sample payroll application). The application is not that complex but will give you an idea about how to go about creating it.

Agile Principles, Patterns, and Practices in C#

You can get the source code at
Source Code

EDIT:

There are two variations of the MVP pattern
(a) Passive view and (b) supervising controller

For complex databinding scenarios I prefer to go with the Supervising controller pattern.
In supervising controller pattern the databinding responsibility rest with the view. So,for treeview/datagrid this should be in the respective views, only view agnostic logic should moved on to the presenter.

I’ll recommend having a look at the following MVP framework
MVC# – An MVP framework

Don’t go by the name (it’s an MVP framework).

Simple winforms MVP video
Winforms – MVP

An example of dealing with dropdown list
MVP – DropDownList

Simple treeview binding example (poor man’s binding). You can add any treeview specific logic in BindTree().

Below is the code snippet…. not tested, directly keyed in from thought….

public interface IYourView
{
   void BindTree(Model model);
}

public class YourView : System.Windows.Forms, IYourView
{
   private Presenter presenter;

   public YourView()
   {
      presenter = new YourPresenter(this);
   }

   public override OnLoad()
   {
         presenter.OnLoad();
   }

   public void BindTree(Model model)
   {
       // Binding logic goes here....
   }
}

public class YourPresenter
{
   private IYourView view;

   public YourPresenter(IYourView view)
   { 
       this.view = view;
   }

   public void OnLoad()
   {
       // Get data from service.... or whatever soruce
       Model model = service.GetData(...);
       view.BindTree(model);
   }
}

Leave a Comment