Здравствуйте, Al_Shargorodsky, Вы писали:
A_S>Всетаки ViewModel это не совсем контроллер-презентер.
Да, не совсем — это только часть контроллера.
A_S> Я бы сказал так — ViewModel можно привести к виду презентера, но это только частный случай.
Не совсем так.
В MVP Presenter (контроллер) выполняет, с одной стороны роль медиатора для модели, а с другой управляет набором View.
В случае WPF ребята эти две роли разделили, в результате Presenter распался на две части: DataModel — медиатор между моделью и View, ModelView — управляет View. Модель же и View остались неизменными. Таким образом, паттерн распался на 4 компонента — Model, DataModel, ModelView и View.
Они сами об этом и пишут: "DataModel is responsible for exposing data in a way that is easily consumable by WPF. All of its public APIs must be called on the UI thread only" Иными словами, роль DataModel в том, чтобы представить данные(Model) в том виде, в котором они удобны для WPF, то есть классическое применение паттерна медиатор.
Касательно ViewModel — "A ViewModel is a model for a view in the application (duh!). It exposes data relevant to the view and exposes the behaviors for the views, usually with Commands"
A_S> public class Model : INotifyPropertyChanged
Если Model — это по прежнему модель, то так делать нельзя. Модель по определению ничего не знает о контроллере и его интерфейсах, а INotifyPropertyChanged — это именно интерфейс контроллера, точнее медиатора для View, а не модели. А у одной модели может быть несколько Презентеров.
A_S> Класс Model здесь — это и ViewModel и DataModel одновременно.
Тогда Model переходит в разряд презентеров.
... << RSDN@Home 1.2.0 alpha rev. 673>>