Я потратил довольно много времени, чтобы попытаться найти элегантное решение для следующей задачи. Я не смог найти решение, которое больше, чем взломать проблему.
У меня простая настройка 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(), когда модель изменена, но это делает ее эхо-изменения, сделанные сервером.
Я ищу элегантное и логичное решение и желаю изменить свою архитектуру, если это имеет смысл.