V MVVMCross slúžia jednorazové väzba a obojsmerné väzba odlišné účely pri riadení interakcie medzi pohľadom a pohľadom.
jednorazová väzba
Jednorazová väzba sa používa na prenos údajov z programu ViewModel do pohľadu iba raz, keď je nastaviť zdroj väzby. Po tomto počiatočnom prenose väzba nesleduje zmeny vo vlastnostiach spoločnosti ViewModel a neaktualizuje zobrazenie, pokiaľ sa samotný zdroj viazania nevynuluje. Tento režim je užitočný pre polia, ktoré sú konfigurovateľné, ale po nastavení sa často nemenia. Napríklad v MVVMCross sa jednorazová väzba používa na nastavenie statického textu z jazykových súborov, pretože používateľ zvyčajne vyberie jazyk raz a zriedka ho mení [1] [10].
obojsmerná väzba
Na druhej strane obojsmerná väzba vytvára nepretržité obojsmerné spojenie medzi pohľadom a pohľadom. Zmeny buď v zobrazení alebo v zobrazení aktualizácie spúšťača v druhom. Tento režim je obzvlášť užitočný pri úprave existujúcich údajov, ako je vyplnenie formulárov, kde sa vstup používateľa a akékoľvek zmeny z programu ViewModel musia odrážať v reálnom čase. V MVVMCross sa bežne používa obojsmerná väzba a často slúži ako predvolený režim pre nové väzby [1] [2].
Kľúčové rozdiely
-Smer toku údajov: Jednorazová väzba aktualizuje zobrazenie iba z programu ViewModel raz, zatiaľ čo obojsmerná väzba aktualizuje pohľad aj pohľad na viewModel nepretržite.
-Zmena monitorovania: Jednorazová väzba nesleduje zmeny po počiatočnej aktualizácii, zatiaľ čo obojsmerná väzba nepretržite monitoruje a aktualizuje oba konce.
-Prípady použitia: Jednoraz je ideálny pre statické alebo zriedkavo meniace sa údaje, zatiaľ čo obojsmerný je vhodnejší pre interaktívne formy alebo dynamickú výmenu údajov.
Stručne povedané, jednorazová väzba sa používa na statické alebo počiatočné nastavenie údajov, zatiaľ čo obojsmerná väzba sa používa pre interaktívne scenáre, v ktorých sa musia pohľad aj viewModel odrážať navzájom zmeny v reálnom čase.
Citácie:[1] https://www.mvvmcross.com/documentation/funmamentals/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-two-way-data-tata-binding-differ-from-simple--sync-syncsyncsync
[5] https://stackoverflow.com/questions/17156368/
Https://yanxiaodi.gitbook..io/xamarin-mvvmcross-wandbook/using-mvvmcross-to-create-your-your-first-xamarin-App/creating-the-android-project/understand-the-data-binding-intax
[7] https://stackoverflow.com/questions/13504906/what-is-two-way-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-netime-in-mvxrecycleview
[11] https://learn.microsoft.com/en-us/dotnet/maui/funmamentals/data-binding/binding-mode?view=net-maui-9.0
Https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/