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