title: Data Binding to an object in C#
body: <p>Objective-c/cocoa offers a form of binding where a control's properties (ie text in a textbox) can be bound to the property of an object. I am trying to duplicate this functionality in C# w/ .Net 3.5.  </p>
  
  <p>I have created the following very simple class in the file MyClass.cs:</p>
  
  <pre><code>class MyClass
  {
      private string myName;
  
      public string MyName
      {
          get
          {
              return myName;
          }
  
          set
          {
              myName = value;
          }
      }
  
      public MyClass()
      {
          myName = "Allen";
      }
  }
  </code></pre>
  
  <p>I also created a simple form with 1 textbox and 1 button. I init'd one instance of Myclass inside the form code and built the project. Using the DataSource Wizard in Vs2008, I selected to create a data source based on object, and selected the MyClass assembly. This created a datasource entity. I changed the databinding of the textbox to this datasource; however, the expected result (that the textbox's contents would be "allen") was not achieved. Further, putting text into the textbox is not updating the name property of the object.</p>
  
  <p>I know i'm missing something fundamental here.  At some point i should have to tie my instance of the MyClass class that i initialized inside the form code to the textbox, but that hasn't occurred.  Everything i've looked at online seems to gloss over using DataBinding with an object (or i'm missing the mark entirely), so any help is great appreciated. </p>
  
  <p>Edit:</p>
  
  <p>Utilizing what I learned by the answers, I looked at the code generated by Visual Studio, it had the following:</p>
  
  <pre><code>this.myClassBindingSource.DataSource = typeof(BindingTest.MyClass);
  </code></pre>
  
  <p>if I comment that out and substitute: </p>
  
  <pre><code>this.myClassBindingSource.DataSource = new MyClass();
  </code></pre>
  
  <p>I get the expected behavior. Why is the default code generated by VS like it is?  Assuming this is more correct than the method that works, how should I modify my code to work within the bounds of what VS generated? </p>