Я потратил довольно много времени, чтобы попытаться найти элегантное решение для следующей задачи. Я не смог найти решение, которое больше, чем взломать проблему.
У меня простая настройка View, ViewModel и модели. Я сделаю это очень просто для объяснения.
-
Model
имеет одно свойствоTitle
типа String. -
Model
- это DataContext дляView
. -
View
имеетTextBlock
, который привязывается кTitle
на модели. -
ViewModel
имеет метод под названиемSave()
, который сохранитModel
доServer
-
Server
может вносить изменения, сделанные вModel
Пока все хорошо. Теперь мне нужно сделать две настройки, чтобы синхронизировать модель с Server
. Тип сервера не важен. Просто знайте, что мне нужно вызвать Save()
, чтобы подтолкнуть модель к Server.
Настройка 1:
- Свойству
Model.Title
необходимо вызватьRaisePropertyChanged()
, чтобы перевести изменения, сделанные вModel
наServer
, наView
. Это хорошо работает, посколькуModel
является DataContext дляView
Неплохо.
Настройка 2:
- Следующий шаг - вызвать
Save()
, чтобы сохранить изменения, сделанные сView
, наModel
наServer
. Здесь я застреваю. Я могу обработать событиеModel.PropertyChanged
наViewModel
, которое вызывает Save(), когда модель изменена, но это делает ее эхо-изменения, сделанные сервером.
Я ищу элегантное и логичное решение и желаю изменить свою архитектуру, если это имеет смысл.