var listener = ChangeListener.Create(myViewModel);
listener.PropertyChanged +=
new PropertyChangedEventHandler<NestedPropertyChangedEventArgs>(listener_PropertyChanged);
listener.CollectionChanged +=
new NotifyCollectionChangedEventHandler(listener_CollectionChanged);
lostmsu/RecursiveChangeNotifier
Track changes in nested INotifyPropertyChanged and INotifyCollectionChanged objects
C#MIT