No MVVMcross, a ligação única e a ligação unidirecional são dois modos distintos de ligação de dados que servem a propósitos diferentes.
Única encadernação
A ligação única transfere dados do ViewModel para a exibição apenas uma vez, quando a fonte de ligação é definida inicialmente. Após essa transferência inicial, a ligação não monitora as alterações no 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 a definição. Por exemplo, no MVVMcross, a ligação única é usada para definir texto estático a partir de arquivos de idioma, pois é comum os usuários selecionar um idioma uma vez e não alterá-lo frequentemente depois [1].
Videira unidirecional
A ligação unidirecional, por outro lado, atualiza continuamente a visualização sempre que a propriedade correspondente no ViewModel muda. Isso significa que quaisquer alterações na propriedade do ViewModel serão automaticamente refletidas na visualização. No entanto, as alterações feitas diretamente na visualização não afetam o modelo de exibição. A ligação unidirecional é útil ao exibir dados provenientes de uma fonte dinâmica, como dados do sensor ou feeds de rede, onde a visualização deve refletir o estado mais recente do ViewModel, mas não precisa enviar atualizações de volta [1].
Diferenças -chave
-Frequência de atualização: a ligação única é atualizada apenas uma vez na instalação, enquanto a ligação unidirecional atualiza continuamente a visualização sempre que o viewmodel muda.
-Monitoramento de alterações: a ligação única não monitora as alterações no viewmodel após a configuração inicial, enquanto a ligação unidirecional ouve ativamente as alterações no viewmodel.
-Casos de uso: O único é ideal para dados estáticos ou com pouca mudança, enquanto a unidirecional é mais adequada para dados dinâmicos que precisam ser exibidos em tempo real, sem a interação do usuário que afeta o modelo ViewModel.
Em resumo, enquanto os dois modos transferem dados do ViewModel para a exibição, a ligação única o faz apenas uma vez e não monitora as alterações, enquanto a ligação unidirecional atualiza continuamente a visualização com base nas alterações do ViewModel.
Citações:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-used-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[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://www.mvvmcross.com/documentation/advanced/custom-data-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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/