title: Databinding in MVP winforms
body: <p>I have a WinForms application implemented in MVP. My form has a <code>TextBox</code> and I want to databind its <code>Text</code> property to a property in the Model. I don't want to refer to the Model in the View.</p>
  
  <p>After searching in Google, I found that databinding by coupling Model and View is a bad idea. My sample initialization of <code>Model</code>, <code>View</code> and <code>Presenter</code> is as follows.</p>
  
  <pre><code>class View : Form, IView
  {
      public View()
      {
          InitializeComponent();
          new Presenter(this);
      }
  }
  
  class Presenter
  {
      public Presenter(IView) : this.Presenter(this, new Model())
      {
      }
  
      public Presenter(IView view)
      {
      }
  }
  
  class Model : IModel
  {
      public Model()
      {
      }
  
  }
  </code></pre>
  
  <p>At present I have 3 projects each for <code>Model</code>, <code>View</code> and <code>Presenter</code>. View has reference to <code>Presenter</code> and <code>Presenter</code> has reference to <code>Model</code>. Can anyone guide me how to form a databinding to a control in <code>View</code> to a property in <code>Model</code>?</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>I know to do the things in Grid. We can assign <code>Datasource</code> property of grid to a <code>List</code> (or something similar) in presenter like:</p>
  
  <pre><code>_view.DataSource = _model.ListOfEmployees;
  </code></pre>
  
  <p>This will reflect the value in UI when <code>ListOfEmployees</code> changes in the Model. But what about a <code>TextBox</code> which exposes a <code>Text</code> property? How can I bind that in MVP architecture?</p>