MVVM: Vinculando ao Modelo Mantendo o Modelo em Sincronização com uma Versão do Servidor
Passei bastante tempo tentando encontrar uma solução elegante para o desafio a seguir. Não consegui encontrar uma solução que fosse mais do que um truque em torno do problema.
Eu tenho uma configuração simples de um View, ViewModel e um modelo. Vou mantê-lo muito simples por uma questão de explicação.
oModel
tem uma única propriedade chamadaTitle
do tipo String.oModel
é o DataContext para oView
.oView
tem umTextBlock
isso é databound paraTitle
no modelo.oViewModel
tem um método chamadoSave()
que salvará oModel
para umServer
oServer
pode empurrar as alterações feitas para oModel
Por enquanto, tudo bem. Agora, há dois ajustes que preciso fazer para manter o Modelo em sincronia com umServer
. O tipo de servidor não é importante. Só sei que preciso ligarSave()
a fim de empurrar o modelo para oServer.
Ajuste 1:
oModel.Title
a propriedade precisará ligarRaisePropertyChanged()
a fim de traduzir as alterações feitas aoModel
peloServer
aoView
. Isso funciona bem desde oModel
é o DataContext para oView
Não é tão ruim.
Ajuste 2:
O próximo passo é ligarSave()
para salvar as alterações feitas a partir doView
aoModel
noServer
. É aqui que fico preso. Eu posso lidar com oModel.PropertyChanged
evento noViewModel
que chama Save () quando o modelo é alterado, mas isso faz eco das alterações feitas pelo servidor.Estou à procura de uma solução elegante e lógica e estou disposto a mudar minha arquitetura, se faz sentido.