Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Czym różni się jednorazowe wiązanie od wiązania dwukierunkowego w MVVMCROSS


Czym różni się jednorazowe wiązanie od wiązania dwukierunkowego w MVVMCROSS


W MVVMCROSS jednorazowe wiązanie i dwukierunkowe wiązanie służą odrębnym celom w zarządzaniu interakcją między widokiem a ViewModel.

jednorazowe wiązanie

Jednorazowe powiązanie służy do przesyłania danych z ViewModel do widoku tylko raz, po ustawieniu źródła wiązania. Po tym początkowym przeniesieniu wiązanie nie monitoruje zmian w właściwościach ViewModel i nie aktualizuje widoku, chyba że samo źródło wiązania zostanie zresetowane. Ten tryb jest przydatny w przypadku pola, które można konfigurować, ale nie zmieniają się często po ustawieniu. Na przykład w MVVMCROSS jednorazowe powiązanie jest używane do ustawiania tekstu statycznego z plików językowych, ponieważ użytkownik zazwyczaj wybiera język raz i rzadko zmienia go później [1] [10].

Dwukierunkowe wiązanie

Z drugiej strony dwukierunkowe wiązanie ustanawia ciągłe, dwukierunkowe połączenie między widokiem a ViewModel. Zmiany w widoku lub aktualizacji wyzwalają ViewModel w drugim. Ten tryb jest szczególnie przydatny podczas edytowania istniejących danych, takich jak wypełnianie formularzy, w których zarówno dane wejściowe użytkownika, jak i wszelkie zmiany z ViewModel muszą znaleźć odzwierciedlenie w czasie rzeczywistym. Wiązanie dwukierunkowe jest powszechnie stosowane w MVVMCROSS i często służy jako tryb domyślny dla nowych powiązań [1] [2].

Kluczowe różnice

-Kierunek przepływu danych: jednorazowe powiązanie aktualizuje widok tylko raz z ViewModel, podczas gdy dwukierunkowe powiązanie aktualizuje zarówno widok, jak i ViewModel.
-Monitorowanie zmiany: jednorazowe wiązanie nie monitoruje zmian po początkowej aktualizacji, podczas gdy dwukierunkowe wiązanie ciągle monitoruje i aktualizuje oba końce.
-Przypadki użycia: jednorazowy jest idealny do danych statycznych lub rzadko zmieniających się danych, podczas gdy dwukierunkowy jest lepiej dostosowany do interaktywnych formularzy lub dynamicznej wymiany danych.

Podsumowując, jednorazowe powiązanie jest używane do statycznej lub początkowej konfiguracji danych, podczas gdy wiązanie dwukierunkowe jest używane do interaktywnych scenariuszy, w których zarówno widok, jak i ViewModel muszą odzwierciedlać swoje zmiany w czasie rzeczywistym.

Cytaty:
[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://softwareengineering.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-liurst-xamarin-app/creating-the-android-project/understanding-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-eTime-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/