Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como a ligação única difere da ligação bidirecional em mvvmcross


Como a ligação única difere da ligação bidirecional em mvvmcross


Em MVVMcross, a ligação única e a ligação bidirecional servem a propósitos distintos no gerenciamento da interação entre a visão e o modelo de vista.

Única encadernação

A ligação única é usada para transferir dados do ViewModel para a exibição apenas uma vez, quando a fonte de ligação é definida. Após essa transferência inicial, a ligação não monitora as alterações nas propriedades do ViewModel e não atualiza a visualização, a menos que a própria fonte de ligação seja redefinida. Esse modo é útil para campos configuráveis, mas não mudam com frequência após serem definidos. Por exemplo, no MVVMcross, a ligação única é usada para definir texto estático a partir de arquivos de idioma, pois o usuário normalmente seleciona um idioma uma vez e raramente o altera depois [1] [10].

Ligação bidirecional

A ligação bidirecional, por outro lado, estabelece uma conexão bidirecional contínua entre a visualização e o viewmodel. Alterações nas atualizações de visualização ou gatilho do ViewModel no outro. Esse modo é particularmente útil ao editar dados existentes, como preencher formulários, onde a entrada do usuário e quaisquer alterações do ViewModel precisam ser refletidas em tempo real. A ligação bidirecional é comumente usada no MVVMcross e geralmente serve como o modo padrão para novas ligações [1] [2].

Diferenças -chave

-Direção do fluxo de dados: a ligação única apenas atualiza a visualização do ViewModel uma vez, enquanto a ligação bidirecional atualiza a visualização e o modelo ViewModel continuamente.
-Monitoramento de alterações: a ligação única não monitora as alterações após a atualização inicial, enquanto a ligação bidirecional monitora e atualiza continuamente as duas extremidades.
-Casos de uso: O único é ideal para alterações estáticas ou com pouca frequência, enquanto bidirecional é mais adequado para formas interativas ou troca dinâmica de dados.

Em resumo, a ligação única é usada para configuração de dados estática ou inicial, enquanto a ligação bidirecional é usada para cenários interativos em que a View e o ViewModel precisam refletir as mudanças um do outro em tempo real.

Citações:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[4] https://softwareengineering.stackexchange.com/questions/322450/how-does-two-way-data-binding-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-grreid-project/undestander-data-binding-syntox
[7] https://stackoverflow.com/questions/13504906/what-is-dwo-way-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-tenime-in-mvxrecyclerview
[11] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[12] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/