Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como o MVVMcross lida com as atualizações ao usar a ligação única


Como o MVVMcross lida com as atualizações ao usar a ligação única


O MVVMcross lida com as atualizações ao usar a ligação única, transferindo 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 ativamente mensagens ou eventos do ViewModel. Portanto, quaisquer alterações subsequentes na propriedade do ViewModel não serão refletidas na visão, a menos que a própria fonte de ligação seja redefinida ou reinicializada.

Pontos-chave da ligação única no MVVMCROSS:

1. Transferência inicial de dados: os dados transferem os dados do ViewModel para a visualização quando a ligação é estabelecida pela primeira vez. Isso geralmente é útil para campos configuráveis, mas não mudam com frequência depois de serem definidos.

2. Nenhum monitoramento contínuo: diferentemente das ligações de mão dupla ou unidirecional, as ligações únicas não monitoram continuamente o viewmodel para alterações. Isso significa que, se a propriedade do ViewModel mudar após a ligação inicial, a visualização não será atualizada automaticamente.

3. Casos de uso: A ligação única é comumente usada em cenários em que os dados são estáticos ou raramente alterações, como definir texto estático a partir de arquivos de idioma. Depois que um idioma é selecionado, é incomum o usuário alterá-lo com frequência, tornando a ligação única adequada para esses casos [1].

4. Redefinição da fonte de ligação: se a fonte de ligação for redefinida ou reinacionalizada, a ligação única transferirá os novos dados do viewmodel para a visualização novamente. No entanto, isso requer ação explícita para redefinir a fonte de ligação.

5. Limitações em visualizações dinâmicas: em visualizações dinâmicas, como aquelas que usam `mvxRecyclerview`, as ligações únicas podem não se comportar conforme o esperado se as visualizações forem recicladas. Nesses casos, a ligação pode ser reavaliada à medida que as visões são reutilizadas, o que pode levar a um comportamento inesperado [6].

Em resumo, a ligação única da MVVMcross é projetada para cenários em que os dados são definidos uma vez e não precisam ser atualizados dinamicamente. Ele simplifica a infraestrutura de ligação, evitando o monitoramento contínuo do viewmodel para alterações, mas requer intervenção manual para atualizar a visualização se os dados do ViewModel mudarem após a ligação inicial.

Citações:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?View=Net-MauI-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross updates-to-bound-property-in-view-not-propaging-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-tenime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-asncronse-mvvm-applications-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup