It seems that there is a guidance that a model should not expose its entities to View, and that all required properties should be duplicated in ViewModel
Example:
Product
Id {get; set;}
Name {get; set;}
.......
ProductViewModel : ViewModelBase
Id {get; set;}
Name {get; set;}
.......
Why is this required? I can understand this if Model doesnt implement INPC, but if it does, then I find this quite unnecessary.
When the View is bound to the Model:
If the View needs to change or you have multiple views a change to the Model will cause changes to all the Views bound to that Model.
From the View’s perspective, the object it is bound to might not be that intuitive; when you need to add a properties and/or commands to the the object do you add those to the ViewModel and keep the ‘original’ properties in the Model or do you modify the Model?
Having a ViewModel gives you an extra abstraction between a single Model and multiple (versions of) Views
All in all it is just a guideline but be aware that what seems OK today might be not so great when you need to modify/update the application.