MVVM: Powiązanie z modelem przy jednoczesnym zachowaniu synchronizacji modelu z wersją serwera
Spędziłem trochę czasu, aby spróbować znaleźć eleganckie rozwiązanie dla następującego wyzwania. Nie udało mi się znaleźć rozwiązania, które byłoby czymś więcej niż hackiem wokół problemu.
Mam prostą konfigurację widoku, ViewModel i modelu. Dla wyjaśnienia będę to bardzo proste.
TheModel
ma jedną właściwość o nazwieTitle
typu String.TheModel
jest DataContext dlaView
.TheView
maTextBlock
to jest połączenie danych doTitle
na modelu.TheViewModel
ma metodę zwanąSave()
to uratujeModel
do aServer
TheServer
może wcisnąć zmiany wprowadzone wModel
Jak na razie dobrze. Teraz muszę dokonać dwóch zmian, aby utrzymać synchronizację modelu zServer
. Typ serwera nie jest ważny. Po prostu wiem, że muszę zadzwonićSave()
w celu popchnięcia Modelu doServer.
Korekta 1:
TheModel.Title
właściwość będzie musiała zadzwonićRaisePropertyChanged()
w celu przetłumaczenia zmian dokonanych wModel
przezServer
doView
. To działa dobrze odModel
jest DataContext dlaView
Nieźle.
Korekta 2:
Następnym krokiem jest zadzwonićSave()
aby zapisać zmiany wprowadzone wView
doModel
naServer
. Tu utknąłem. Mogę sobie poradzićModel.PropertyChanged
wydarzenie naViewModel
wywołuje Save (), gdy model zostanie zmieniony, ale powoduje to echo zmian wprowadzonych przez serwer.Szukam eleganckiego i logicznego rozwiązania i jestem gotów zmienić moją architekturę, jeśli ma to sens.