O uso de ligação única no MVVMCROSS oferece vários benefícios sobre outros modos de ligação, principalmente em cenários específicos:
1. Despesas gerais reduzidas: a ligação única é útil quando você precisa definir um valor do viewmodel para a visualização apenas uma vez, sem monitorar continuamente as alterações. Isso reduz a sobrecarga associada à manutenção de uma ligação, pois não requer a estrutura para ouvir atualizações do ViewModel. Isso é particularmente benéfico para dados estáticos que não mudam quando estão definidos, como texto de arquivos de idioma [1] [3].
2. Desempenho em visualizações recicladas: Embora as ligações únicas possam ser problemáticas em visualizações recicladas como as do `mvxRecyclerView`, elas são ideais para cenários em que as visões não são recicladas ou onde os dados são estáticos e não precisam ser atualizados dinamicamente. No entanto, nos casos em que as visões são recicladas, as ligações únicas podem não se comportar conforme o esperado, porque as visões são reutilizadas e recuperadas à medida que aparecem na tela [7].
3. Infraestrutura de ligação simplificada: Como as ligações únicas são atualizadas apenas quando o contexto de ligação muda, elas simplificam a infraestrutura de ligação, eliminando a necessidade de monitorar as alterações da propriedade de origem. Isso pode levar a um código mais limpo e a menos questões em potencial relacionadas a atualizações contínuas [4].
4. Apropriado para dados somente leitura: a ligação única é adequada para exibir dados somente leitura que são conhecidos no tempo de inicialização e não mudam. Isso inclui cenários como mostrar informações estáticas como o horário de restaurante, onde os dados são definidos uma vez e não precisam de mais atualizações [3].
5. Consistência com dados estáticos: em aplicativos onde determinados dados são estáticos e não mudam com frequência, a ligação única garante que esses dados sejam definidos corretamente sem atualizações desnecessárias. Isso mantém a consistência na interface do usuário sem a sobrecarga do monitoramento contínuo [1] [3].
Em resumo, a ligação única no MVVMCROSS é benéfica ao lidar com dados estáticos que não requerem atualizações contínuas, oferecendo uma sobrecarga reduzida e o gerenciamento de ligação simplificado. No entanto, pode não ser adequado para dados dinâmicos ou com frequência, ou em cenários em que as visões são recicladas.
Citações:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-used-in-a-project
[3] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[4] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/17156368/
[7] https://stackoverflow.com/questions/48910503/binding-mode-tenthime-in-mvxrecyclerview
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle