W MVVMCROSS jednorazowe wiązanie danych jest trybem, w którym dane są przesyłane z ViewModel do widoku tylko raz, po ustaleniu wiązania. Po tym początkowym przeniesieniu powiązanie nie monitoruje zmian i nie wykonuje żadnych aktualizacji, chyba że samo źródło wiązania zostanie zresetowane. Oto kilka typowych przypadków użycia jednorazowego powiązania danych:
1. Tekst statyczny z plików językowych: Łączne powiązanie jest szczególnie przydatne przy ustawianiu tekstu statycznego z plików językowych. Po wybraniu języka rzadko zmienia go użytkownik, więc nie ma potrzeby ciągłych aktualizacji. Takie podejście pomaga w utrzymaniu czystej i wydajnej konfiguracji wiązania, ponieważ pozwala uniknąć niepotrzebnych kontroli zmian, które raczej nie wystąpią [2].
2 Obejmuje to ustawienia lub dane ustawione podczas inicjalizacji i pozostają stałe w czasie wykonywania aplikacji.
3. Optymalizacja wydajności: Chociaż na ogół nie ma kary wyników za stosowanie wiązań jednokierunkowych, jednorazowe powiązania mogą dodatkowo optymalizować wydajność, eliminując potencjalne koszty ogólne związane z wykrywaniem zmian. Może to być szczególnie istotne w scenariuszach, w których dane są znane jako statyczne i nie wymagają aktualizacji.
4. Zmniejszenie niepotrzebnych aktualizacji: w przypadkach, w których dane są głównie statyczne i muszą być wyświetlane tylko raz, przy użyciu jednorazowego wiązania zapobiega niepotrzebnym aktualizacjom. Może to pomóc w zmniejszeniu kosztów obliczeniowych związanych z częstymi kontroli zmian, szczególnie w aplikacjach złożonych lub wymagających danych.
5. Uproszczenie logiki warunkowej: Korzystając z jednorazowego powiązania danych statycznych, programiści mogą uprościć logikę warunkową związaną z układem ekranu lub prezentacją danych. Pomaga to w utrzymaniu czystszej bazy kodowej poprzez oddzielenie dynamicznego obsługi danych od statycznego wyświetlania danych.
Podsumowując, jednorazowe wiązanie danych w MVVMCROSS jest idealne do scenariuszy, w których dane są statyczne lub rzadko zmieniają się, umożliwiając wydajną i prostą prezentację danych bez narzutu ciągłego monitorowania zmian.
Cytaty:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[3] https://www.reddit.com/r/androiddev/comments/ux9379/what_are_the_use_cases_of_data_binding_and_when/
[4] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[5] https://stackoverflow.com/questions/48910503/binding-mode-eTime-in-mvxrecyclerview
[6] http://stackoverflow.com/questions/10700445/in-mvvmcross-how-do-o-do-custom.-bind-properties
[7] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[8] https://github.com/mvvmcross/mvvmcross/issues/421
[9] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross