Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon En quoi la liaison ponctuelle diffère-t-elle d'une liaison à sens unique dans MVVMCROSS


En quoi la liaison ponctuelle diffère-t-elle d'une liaison à sens unique dans MVVMCROSS


Dans MVVMCROSS, la liaison unidirectionnelle et la liaison unidirectionnelle sont deux modes de liaison de données distinctes qui servent des objectifs différents.

Liaison unique

La liaison unique transfère les données du 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 les modifications du 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 leur définition. Par exemple, dans MVVMCROSS, la liaison ponctuelle est utilisée pour définir du texte statique à partir des fichiers de langue, car il est courant que les utilisateurs sélectionnent une langue une fois et ne le modifient pas fréquemment par la suite [1].

Binding à sens unique

La liaison unidirectionnelle, en revanche, met à jour en permanence la vue chaque fois que la propriété correspondante du ViewModel change. Cela signifie que toute modification de la propriété de ViewModel sera automatiquement reflétée dans la vue. Cependant, les modifications apportées directement à la vue n'affectent pas le ViewModel. La liaison unidirectionnelle est utile lors de l'affichage de données provenant d'une source dynamique, telles que les données de capteur ou les flux de réseau, où la vue doit refléter le dernier état du ViewModel mais n'a pas besoin de lui renvoyer des mises à jour [1].

Différences clés

- Fréquence de mise à jour: la liaison unique met à jour la vue une seule fois à la configuration, tandis que la liaison unidirectionnelle met en continu la vue chaque fois que le ViewModel change.
- Surveillance des modifications: la liaison unique ne surveille pas les modifications du ViewModel après la configuration initiale, tandis que la liaison unidirectionnelle écoute activement les modifications du ViewModel.
- Cas d'utilisation: une seule fois est idéal pour les données statiques ou rarement modifiées, tandis que le sens est mieux adapté aux données dynamiques qui doivent être affichées en temps réel sans interaction utilisateur affectant le ViewModel.

En résumé, alors que les deux modes transfèrent les données de ViewModel vers la vue, la liaison unique ne le fait qu'une seule fois et ne surveille pas les modifications, tandis que la liaison unidirectionnelle met en continu la vue sur la base des modifications de vue de vue.

Citations:
[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-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-troid-project/understing-the-data-binding-syntax
[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-onetime-in-mvxrecyclerview
[11] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/