MVVM: Enlace al modelo mientras se mantiene el modelo sincronizado con una versión del servidor
He pasado bastante tiempo tratando de encontrar una solución elegante para el siguiente desafío. No he podido encontrar una solución que sea más que un truco para solucionar el problema.
Tengo una configuración simple de una vista, un modelo de vista y un modelo. Lo mantendré muy simple por el bien de la explicación.
losModel
tiene una sola propiedad llamadaTitle
de tipo String.losModel
es el DataContext para elView
.losView
tiene unTextBlock
eso es databound aTitle
en el modelo.losViewModel
tiene un método llamadoSave()
que salvará alModel
a unServer
losServer
puede empujar los cambios realizados en elModel
Hasta ahora tan bueno. Ahora hay dos ajustes que debo hacer para mantener el modelo sincronizado con unServer
. El tipo de servidor no es importante. Solo sé que necesito llamarSave()
con el fin de empujar el modelo a laServer.
Ajuste 1:
losModel.Title
la propiedad tendrá que llamarRaisePropertyChanged()
con el fin de traducir los cambios realizados en elModel
por elServer
alView
. Esto funciona muy bien ya queModel
es el DataContext para elView
No está mal.
Ajuste 2:
El siguiente paso es llamarSave()
para guardar los cambios realizados desde elView
alModel
sobre elServer
. Aquí es donde me quedo atascado. Puedo manejar elModel.PropertyChanged
evento en elViewModel
que llama a Guardar () cuando se cambia el modelo, pero esto hace que se haga eco de los cambios realizados por el servidor.Estoy buscando una solución elegante y lógica y estoy dispuesto a cambiar mi arquitectura si tiene sentido.