MVVM: Bindung an Model, während Model mit einer Serverversion synchronisiert bleibt
Ich habe einige Zeit damit verbracht, eine elegante Lösung für die folgende Herausforderung zu finden. Ich war nicht in der Lage, eine Lösung zu finden, die mehr als nur ein Hack um das Problem ist.
Ich habe ein einfaches Setup für ein View, ViewModel und ein Model. Ich werde es der Erklärung halber sehr einfach halten.
DasModel
hat eine einzige Eigenschaft namensTitle
vom Typ String.DasModel
ist der DataContext für dieView
.DasView
hat einTextBlock
das ist datengebunden anTitle
auf dem Modell.DasViewModel
hat eine Methode aufgerufenSave()
das wird das rettenModel
zu einemServer
DasServer
können Änderungen an derModel
So weit, ist es gut. Nun müssen zwei Einstellungen vorgenommen werden, um das Modell mit a synchron zu haltenServer
. Der Servertyp ist nicht wichtig. Weiß nur, dass ich anrufen mussSave()
um das Modell an die zu schiebenServer.
Anpassung 1:
DasModel.Title
Eigentum muss anrufenRaisePropertyChanged()
Um die Änderungen zu übersetzen, die an derModel
bis zumServer
zumView
. Das funktioniert gut seit demModel
ist der DataContext für dieView
Nicht so schlecht.
Anpassung 2:
Der nächste Schritt ist, anzurufenSave()
Speichern von Änderungen aus demView
zumModel
auf derServer
. Hier stecke ich fest. Ich kann damit umgehenModel.PropertyChanged
Veranstaltung auf derViewModel
Diese Methode ruft Save () auf, wenn das Modell geändert wird, gibt jedoch die vom Server vorgenommenen Änderungen wieder.Ich suche eine elegante und logische Lösung und bin bereit, meine Architektur zu ändern, wenn es Sinn macht.