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


Czym różni się jednorazowe wiązanie od wiązania jednokierunkowego w MVVMcross


W MVVMCross jednorazowe wiązanie i jednokierunkowe wiązanie to dwa odrębne tryby wiązania danych, które służą różnym celom.

jednorazowe wiązanie

Pewne powiązanie przenosi dane z ViewModel do widoku tylko raz, po początkowym ustawianiu źródła wiązania. Po tym początkowym przeniesieniu wiązanie nie monitoruje zmian w 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 ich ustawianiu. Na przykład w MVVMCROSS jednorazowe powiązanie jest używane do ustawiania tekstu statycznego z plików językowych, ponieważ użytkownicy często wybierają język i nie zmieniają go często później [1].

Wiązanie jednokierunkowe

Z drugiej strony wiązanie jednokierunkowe ciągle aktualizuje widok, gdy odpowiednia właściwość w ViewModel zmienia się. Oznacza to, że wszelkie zmiany właściwości ViewModel zostaną automatycznie odzwierciedlone w widoku. Jednak zmiany wprowadzone bezpośrednio do widoku nie wpływają na ViewModel. Wiązanie jednokierunkowe jest przydatne podczas wyświetlania danych pochodzących z dynamicznego źródła, takich jak dane czujnika lub kanały sieciowe, w którym widok powinien odzwierciedlać najnowszy stan ViewModel, ale nie musi wysyłać do niego aktualizacji [1].

Kluczowe różnice

-Częstotliwość aktualizacji: jednorazowe powiązanie aktualizuje widok tylko raz w konfiguracji, a łączenie jednokierunkowe stale aktualizuje widok, gdy zmienia się ViewModel.
-Monitorowanie zmiany: jednorazowe wiązanie nie monitoruje zmian w ViewModel po początkowej konfiguracji, podczas gdy wiązanie jednokierunkowe aktywnie słucha zmian w ViewModel.
-Przypadki użycia: jednorazowy jest idealny do danych statycznych lub rzadko zmieniających się, podczas gdy w jedną stronę lepiej nadaje się do danych dynamicznych, które należy wyświetlić w czasie rzeczywistym bez interakcji użytkownika wpływającego na ViewModel.

Podsumowując, podczas gdy oba tryby przenoszą dane z ViewModel do widoku, jednorazowe powiązanie robi to tylko raz i nie monitoruje zmian, podczas gdy wiązanie jednokierunkowe stale aktualizuje widok na podstawie zmian ViewModel.

Cytaty:
[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-liurst-xamarin-app/creating-the-android-project/understanding-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-eTime-mvxrecyclerview
[11] https://www.reddit.com/r/javascript/comments/v993r4/askJS_Why_is_oneway_binding_better_than_twoway/