Я сильно не согласны с концепцией о том, что Модель не должна внедрять INotifyPropertyChanged
. Этот интерфейс не специфичен для пользовательского интерфейса! Он просто информирует об изменении. Действительно WPF сильно использует это для определения изменений, но не означает, что это интерфейс интерфейса. Я бы сравнил его со следующим комментарием: «Шина - автомобильная аксессуар». Конечно, это так, но велосипеды, автобусы и т. Д. Также используют его. В целом, этот интерфейс не воспринимается как пользовательский интерфейс.
Сказав это, это не обязательно означает, что я действительно верю в Модель, предоставляющую уведомления. Фактически, как правило, модель не должна реализовывать этот интерфейс, если это не необходимо. В большинстве случаев, когда серверные данные не помещаются в клиентское приложение, модель может быть устаревшей. Но, слушая данные финансового рынка, я не понимаю, почему модель не может реализовать интерфейс. В качестве примера, что, если у меня есть логика без UI, такая как услуга, которая, если получает цену Bid или Ask за значение для выдачи, выдает предупреждение - через электронную почту или размещает заказ, тогда это может быть возможным чистым решением ,
Однако существуют разные способы достижения целей, но я всегда буду спорить в пользу простоты и избежать избыточности.
Что лучше? Определение событий в коллекции или изменения свойств на модели представления и распространение их на модель или представление, которое внутренне обновляет модель (через View-Model)?
Нижняя строка, когда вы видите, что кто-то утверждает, что «вы не можете делать то или это», это знак того, что они не знают, о чем говорят.
Это действительно зависит от вашего дела, и на самом деле MVVM - это основа с множеством проблем, и я еще не видел реализацию MVMM в колледже по всему борту.
Хотелось бы, чтобы у меня было больше времени, чтобы объяснить многие разновидности MVVM и некоторые решения общих проблем - в основном, предоставленные другими разработчиками, - но я думаю, мне придется делать это в другой раз.
если реализовать INPC, дайте https://github.com/Fody/PropertyChanged попробовать - это сэкономит вам недели типизации. –