Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak MVVMCROSS obsługuje aktualizacje podczas korzystania z jednorazowego powiązania


Jak MVVMCROSS obsługuje aktualizacje podczas korzystania z jednorazowego powiązania


MVVMCROSS obsługuje aktualizacje podczas korzystania z jednorazowego powiązania poprzez przesyłanie danych z ViewModel do widoku tylko raz, gdy początkowo ustawione jest źródło wiązania. Po tym początkowym przeniesieniu powiązanie nie monitoruje aktywnie zmiany wiadomości ani zdarzeń z ViewModel. Dlatego wszelkie kolejne zmiany właściwości ViewModel nie zostaną odzwierciedlone w poglądu, chyba że samo źródło wiązania zostanie zresetowane lub ponowne.

Kluczowe punkty jednorazowego wiązania w MVVMCROSS:

1. Początkowe przesyłanie danych: wiązanie przenosi dane z ViewModel do widoku po pierwszym powiązaniu. Jest to zwykle przydatne w przypadku pola, które można konfigurować, ale nie zmieniają się często po ich ustawieniu.

2. Brak ciągłego monitorowania: W przeciwieństwie do wiązań dwustronnych lub jednokierunkowych, jednorazowe powiązania nie monitorują ciągłego monitorowania ViewModel pod kątem zmian. Oznacza to, że jeśli właściwość ViewModel zmieni się po początkowym powiązaniu, widok nie zostanie automatycznie aktualizowany.

3. Przypadki użycia: jednorazowe wiązanie jest powszechnie używane w scenariuszach, w których dane są statyczne lub rzadko się zmieniają, takie jak ustawianie tekstu statycznego z plików językowych. Po wybraniu języka rzadko zmienia go użytkownik, dzięki czemu jednorazowe wiązanie jest odpowiednie dla takich przypadków [1].

4. Resetowanie źródła wiązania: Jeśli źródło wiązania jest zresetowane lub ponowne ponowne, jednorazowe powiązanie przeniesie nowe dane z ViewModel do widoku. Wymaga to jednak wyraźnego działania w celu zresetowania źródła wiązania.

5. Ograniczenia w widokach dynamicznych: W widokach dynamicznych, takich jak te wykorzystujące „mvxrecyclerview”, jednorazowe powiązania mogą nie zachowywać się zgodnie z oczekiwaniami, jeśli poglądy są poddawane recyklingowi. W takich przypadkach wiązanie może być ponownie ocenione, ponieważ widoki są ponownie wykorzystywane, co może prowadzić do nieoczekiwanego zachowania [6].

Podsumowując, jednorazowe powiązanie MVVMCROSS jest przeznaczone do scenariuszy, w których dane są ustawiane raz i nie muszą być aktualizowane dynamicznie. Upraszcza infrastrukturę wiążącą, unikając ciągłego monitorowania ViewModel pod kątem zmian, ale wymaga ręcznej interwencji, aby zaktualizować widok, jeśli dane ViewModel zmieniają się po początkowym powiązaniu.

Cytaty:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency Inction
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackaverflow.com/questions/46558177/mvvmcross-pdates-to-bound-property-view-not-propagating-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-eTime-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_tlebles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-andetup