Dans MVVMCROSS, la liaison ponctuelle et la liaison bidirectionnelle servent des objectifs distincts dans la gestion de l'interaction entre la vue et le ViewModel.
Liaison unique
Une liaison unique est utilisée pour transférer des données du ViewModel vers la vue une seule fois, lorsque la source de liaison est définie. Après ce transfert initial, la liaison ne surveille pas les modifications des propriétés de ViewModel et ne met pas à jour la vue à moins que la source de liaison elle-même ne soit réinitialisée. Ce mode est utile pour les champs configurables mais qui ne changent pas fréquemment après avoir été défini. Par exemple, dans MVVMCROSS, la liaison ponctuelle est utilisée pour définir le texte statique à partir des fichiers de langue, car l'utilisateur sélectionne généralement une langue une fois et rarement la modification par la suite [1] [10].
reliure à double sens
La liaison bidirectionnelle, en revanche, établit un lien bidirectionnel continu entre la vue et le ViewModel. Modifications dans la vue ou les mises à jour du déclenchement ViewModel dans l'autre. Ce mode est particulièrement utile lors de la modification des données existantes, telles que le remplissage des formulaires, où les entrées de l'utilisateur et toutes les modifications du ViewModel doivent se refléter en temps réel. La liaison bidirectionnelle est couramment utilisée dans MVVMCROSS et sert souvent de mode par défaut pour les nouvelles liaisons [1] [2].
Différences clés
- Direction du flux de données: la liaison unique ne met à jour que la vue de la vue ViewModel, tandis que la liaison bidirectionnelle met à jour la vue et le ViewModel en continu.
- Modification de la surveillance: la liaison unique ne surveille pas les modifications après la mise à jour initiale, tandis que la liaison bidirectionnelle surveille et met à jour les deux extrémités.
- Cas d'utilisation: une seule fois est idéal pour les données statiques ou rarement modifiées, tandis que bidirectionnel est mieux adapté aux formes interactives ou à l'échange de données dynamiques.
En résumé, la liaison ponctuelle est utilisée pour la configuration des données statique ou initiale, tandis que la liaison bidirectionnelle est utilisée pour les scénarios interactifs où la vue et le modélisation de Views doivent refléter les modifications de l'autre en temps réel.
Citations:[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://softwareensineering.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-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-troid-project/understing-the-data-binding-syntax
[7] https://stackoverflow.com/questions/13504906/what-is-two-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-onetime-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/