When you implement the INotifyPropertyChanged interface, you're responsible for calling the PropertyChanged event each and everytime a property is updated in the class.
This typically leads to the following code :
public class MyClass: INotifyPropertyChanged
private bool myfield;
public bool MyField
{
get { return myfield; }
set
{
if (myfield == value)
return;
myfield = value;
OnPropertyChanged(new PropertyChangedEventArgs("MyField"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler h = PropertyChanged;
if (h != null)
h(this, e);
}
}
That is 12 lines per property.
It would be so much simpler if one was able to decorate automatic properties like this :
[INotifyProperty]
public double MyField{ get; set; }
But unfortunately this is not possible (see this post on msdn for example)
How can I reduce the amount of code needed per property?