Здесь довольно общий ответ, но:
Модели представления должны содержать информацию, необходимую для связанного представления, и обрабатывать взаимодействие представления с моделью. Это включает в себя данные для заполнения таких вещей, как текстовые поля и функции, которые определяют, что делать при нажатии кнопки (команда).
Модель - это все, что не связано напрямую с видом. Это могут быть пользовательские типы данных или классы для взаимодействия с базой данных.
Модель не должна иметь функцию risepropertychange () - точнее, она не должна реализовывать интерфейс INotifyPropertyChanged. Каждая модель представления должна реализовывать INotifyPropertyChanged. Самый простой способ сделать это, как правило, иметь базовый класс viewmodel, который наследуют все ваши модели представления, от которого реализуется интерфейс.
Вот хороший пример реализации INotifyProperty. , я лично использую последний параметр под заголовком C # 7 в моем базовом классе viewmodel и вызываю функцию SetField () из каждого свойства.