= Implementing INotifyPropertyChanged = It's changed a lot over the years. Here is the latest iteration that I use. {{{#!highlight csharp private BindingList _Area = new BindingList(); public BindingList Area { get => _Area; set => SetField>(ref _Area, value); } //... public event PropertyChangedEventHandler PropertyChanged; protected void SetField(ref T field, T value, [CallerMemberName] string propertyName = null) { field = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }}} Suppose that the value you are setting with SetField is a property of a Model object. You may get an error that says, "A non ref-returning property or indexer may not be used as an out or ref value." There is an easy fix for this. {{{#!hightlight csharp private BindingList _Area = new BindingList(); public BindingList Area { get => _Area; set => _Area = SetField>(value); } //... public event PropertyChangedEventHandler PropertyChanged; protected void SetField(T value, [CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); return value; } }}}