Note
The PropertyChanged event uses the PropertyChangedEventHandler delegate in order to consumers, which rely on the conventional property
changed notifications can use it in a compatible way. To get the old and new values in an event handler you can cast the argument to PropertyChangedExtendedEventArgs
or call the TryGetOldPropertyValue and TryGetNewPropertyValue extension methods on it.