Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak se jednorázová vazba liší od jednosměrné vazby v MVVMCross


Jak se jednorázová vazba liší od jednosměrné vazby v MVVMCross


V MVVMCrossu jsou jednorázová vazba a jednosměrná vazba dva odlišné režimy vazby dat, které slouží různým účelům.

Jednorázová vazba

Jednorázová vazba přenáší data z ViewModelu do pohledu pouze jednou, když je původně nastaven zdroj vázání. Po tomto počátečním přenosu vazba nesleduje změny v ViewModel a neaktualizuje pohled, pokud není resetován samotný zdroj vazeb. Tento režim je užitečný pro pole, která jsou konfigurovatelná, ale po nastavení se často nemění. Například v MVVMCrossu se jednorázová vazba používá pro nastavení statického textu z jazykových souborů, protože je běžné, že uživatelé vybere jazyk jednou a poté jej často nezmění [1].

jednosměrná vazba

Na druhé straně jednosměrná vazba nepřetržitě aktualizuje zobrazení, kdykoli se změní odpovídající vlastnost v ViewModel. To znamená, že jakékoli změny ve vlastnictví ViewModelu se v pohledu automaticky projeví. Změny provedené přímo k pohledu však neovlivňují ViewModel. Jednosměrná vazba je užitečná při zobrazování dat, která pocházejí z dynamického zdroje, jako jsou data senzorů nebo síťová kanály, kde by se zobrazoval pohled odrážet nejnovější stav ViewModel, ale nemusí do něj odesílat aktualizace [1].

Klíčové rozdíly

-Frekvence aktualizace: Jednorázová vazba aktualizuje zobrazení pouze jednou při nastavení, zatímco jednosměrná vazba nepřetržitě aktualizuje zobrazení, kdykoli se změní ViewModel.
-Monitorování změny: Jednorázová vazba nesleduje změny v ViewModel po počátečním nastavení, zatímco jednosměrná vazba aktivně poslouchá změny v viewModelu.
-Případy použití: Jednoduše je ideální pro statická nebo zřídka měnící data, zatímco jednosměrná cesta je vhodnější pro dynamická data, která je třeba zobrazit v reálném čase, aniž by došlo k interakci uživatele ovlivňující ViewModel.

Stručně řečeno, zatímco oba režimy přenášejí data z ViewModelu do pohledu, jednorázová vazba tak činí pouze jednou a nesleduje změny, zatímco jednosměrná vazba nepřetržitě aktualizuje pohled na základě změn ViewModel.

Citace:
[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-the-ndroid-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-onetime-in-mvxRecyclerView
[11] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/