V MVVMCrossu slouží jednorázová vazba a obousměrná vazba zřetelných účelů při řízení interakce mezi pohledem a viewmodel.
Jednorázová vazba
Jednorázová vazba se používá k přenosu dat z ViewModel do pohledu pouze jednou, když je nastaven zdroj vazebného zdroje. Po tomto počátečním přenosu vazba nesleduje změny vlastností 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 uživatel obvykle vybere jazyk jednou a poté jej zřídka mění [1] [10].
Obousměrná vazba
Na druhé straně obousměrná vazba vytváří kontinuální, obousměrné spojení mezi pohledem a ViewModel. Změny buď v pohledu nebo aktualizacích spuštění ViewModel v druhém. Tento režim je zvláště užitečný při úpravách stávajících dat, jako je vyplňování formulářů, kde je třeba v reálném čase odrazit jak vstup uživatele, tak jakékoli změny z ViewModel. Obousměrná vazba se běžně používá v mvvmcrossu a často slouží jako výchozí režim pro nové vazby [1] [2].
Klíčové rozdíly
-Směr toku dat: Jednorázová vazba aktualizuje pouze zobrazení z viewModelu, zatímco obousměrná vazba aktualizuje zobrazení i viewModel nepřetržitě.
-Monitorování změny: Jednorázová vazba nesleduje změny po počáteční aktualizaci, zatímco obousměrná vazba nepřetržitě monitoruje a aktualizuje oba konce.
-Případy použití: Jednoduše je ideální pro statické nebo zřídka měnící se data, zatímco obousměrná cesta je vhodnější pro interaktivní formy nebo dynamickou výměnu dat.
Stručně řečeno, jednorázová vazba se používá pro statické nebo počáteční nastavení dat, zatímco obousměrná vazba se používá pro interaktivní scénáře, kde jak pohled i viewModel musí navzájem odrážet změny v reálném čase.
Citace:[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-way-data-binding-difer-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[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://stackoverflow.com/questions/13504906/what-is-two-way-way-nay-way
[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://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/