title: Data Binding doesn't work when I assign a new object instance to the bound variable
body: <p>I have an object that I have bound to a control on a form using C# WinForms (targetting .NET 4.5.2). I have implemented <code>INotifyPropertyChanged</code>, and when I modify a Property of this object, it updates on the Form's control as expected. However, when I change this object's instance to a new instance, it will no longer update the control, even if I try to modify a specific Property. </p>
  
  <pre><code>class User : INotifyPropertyChanged
  {
      string _name = "";
  
      public string Name
      {
          get { return _name; }
          set { _name = value; OnPropertyChanged("Name"); }
      }
  
      public event PropertyChangedEventHandler PropertyChanged;
  
      protected void OnPropertyChanged(string property)
      {
          PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
      }
  
      public User() { }
  
      public User(string name)
      {
          Name = name;
      }
  
      public User(User otherUser)
      {
          Name = otherUser.Name;
      }
  }
  </code></pre>
  
  <p>and on the Form I have</p>
  
  <pre><code>User currentUser = new User("Example Name");
  lblName.DataBindings.Add("Text", currentUser, "Name");
  </code></pre>
  
  <p>which updates properly. I can change name using <code>currentUser.Name = "Blahblah";</code> and it works fine. When I try to call <code>currentUser = new User("New Name");</code>, it will no longer update no matter what I do.</p>
  
  <p>It is my understanding that the specific instance of the object is what the controls are bound to. My primary goal is to not have to manually go through each Property of larger objects and manually change everything over every single time I want to change instances.</p>
  
  <p>My question: is there a way to change instances of an object without removing the binding to the control? </p>