Skip to content

On_PropertyName_Changed

vinesworth edited this page Nov 24, 2014 · 7 revisions

Allows having a "similar named" method called when a property is set

Your code

    public class Person : INotifyPropertyChanged
    {
      public event PropertyChangedEventHandler PropertyChanged;

      public string Name { get; set; }

      public void OnNameChanged()
      {
        Debug.WriteLine("Name Changed");
      }
    }

What gets compiled

Note the call to OnNameChanged injected in the setter of the property.

    public class Person : INotifyPropertyChanged
    {
      public event PropertyChangedEventHandler PropertyChanged;

      string name;

      public string Name
      {
        get { return name; }
        set
        {
          if (value != name)
          {
            name = value;
            OnNameChanged();
            OnPropertyChanged("Name");
          }
        }
      }

      public void OnNameChanged()
      {
        Debug.WriteLine("Name Changed");
      }

      public virtual void OnPropertyChanged(string propertyName)
      {
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
          propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
      }
    }
Clone this wiki locally