Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment MVVMCross gère-t-il les mises à jour lors de l'utilisation d'une liaison unique


Comment MVVMCross gère-t-il les mises à jour lors de l'utilisation d'une liaison unique


MVVMCROSS gère les mises à jour lors de l'utilisation d'une liaison unique en transférant les données de ViewModel vers la vue une seule fois, lorsque la source de liaison est initialement définie. Après ce transfert initial, la liaison ne surveille pas activement les messages ou les événements de modification de ViewModel. Par conséquent, toute modification ultérieure de la propriété de ViewModel ne sera pas reflétée dans la vue à moins que la source de liaison elle-même ne soit réinitialisée ou réinitialisée.

Points clés de la liaison unique dans MVVMCROSS:

1. Transfert de données initial: la liaison transfère les données du ViewModel vers la vue lorsque la liaison est établie pour la première fois. Ceci est généralement utile pour les champs configurables mais qui ne changent pas fréquemment après avoir été défini.

2. Aucune surveillance continue: Contrairement aux liaisons bidirectionnelles ou unidirectionnelles, les liaisons uniques ne surveillent pas en continu le ViewModel pour les modifications. Cela signifie que si la propriété de ViewModel change après la liaison initiale, la vue ne sera pas mise à jour automatiquement.

3. Cas d'utilisation: la liaison ponctuelle est couramment utilisée dans les scénarios où les données sont statiques ou changent rarement, telles que la définition du texte statique à partir de fichiers linguistiques. Une fois qu'une langue est sélectionnée, il est rare que l'utilisateur le change fréquemment, ce qui rend la liaison unique adaptée à de tels cas [1].

4. Réinitialisation de la source de liaison: Si la source de liaison est réinitialisée ou réinitialisée, la liaison unique transférera les nouvelles données du ViewModel à la vue. Cependant, cela nécessite une action explicite pour réinitialiser la source de liaison.

5. Limites dans les vues dynamiques: Dans les vues dynamiques, telles que celles utilisant `mvxRecyclerView`, les liaisons uniques peuvent ne pas se comporter comme prévu si les vues sont recyclées. Dans de tels cas, la liaison peut être réévaluée à mesure que les vues sont réutilisées, ce qui peut conduire à un comportement inattendu [6].

En résumé, la liaison unique de MVVMCross est conçue pour les scénarios où les données sont définies une fois et n'ont pas besoin d'être mises à jour dynamiquement. Il simplifie l'infrastructure de liaison en évitant la surveillance continue du ViewModel pour les modifications, mais il nécessite une intervention manuelle pour mettre à jour la vue si les données de ViewModel changent après la liaison initiale.

Citations:
[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-propagating-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-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-asynchronous-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/custumising-using-app-and-setup