Somewhat general answer here but:
Viewmodels should contain the information needed for the associated view and handle view interaction with the model. This includes data to fill things like textboxes and functions that determine what to do when a button is pressed (a command).
The model is everything not directly connected to a view. This might be custom data types or classes for interacting with a database.
The model should not have a raisepropertychange() function - more accurately it should not implement the INotifyPropertyChanged interface. Every viewmodel should implement INotifyPropertyChanged, the easiest way to do this is generally to have a base viewmodel class that all of your viewmodels inherit from which implements the interface.
Here is a good example of the INotifyProperty implementation., I personally use the last option under the C#7 heading in my viewmodel base class and call the SetField() function from each property.