I've read various approaches to communicating changes in model data to the view model. Some suggest that the model should implement INotifyPropertyChanged where possible, so that it may notify the view model of changed properties. Some suggest a service layer between model and view model, with the service layer implementing INPC, method calls being routed through this service layer to the model so that the service layer notifies the view model.
I consider the latter to be a more granular revision of the former and have begun implementing INPC in my model classes. It feels wrong because
a) I now have to write an event handler in my view model for notifications from the model. This takes the form of a long switch(propertyName) which sets the corresponding property(s) on the view model causing NPC to be sent upwards again. I feel like I'm writing a lot of boiler plate code here.
b) View model is now coupled to my model via a bunch of strings that are regulated solely by convention i.e no 'interface' defined. Not to mention the difficulty this causes IDEs.
c) My model has to be modified to accomodate this context! What if it was closed for some reason? I thought patterns like this were designed to increase code reusability & seperation of concerns. Not only this but the code required to fire the INPC events is tedious and repetetive and not really abstractable.
I'm really keen to know how WPF pros approach this problem whether by dependency properties etc. I get the feeling I am missing something. I'm not keen on using a framework as would like to learn 'from the ground up'. I've been away from WPF for a year or two and working with AngularJS recently has made me question my methods here.
Thanks!