V MVVMcrossu enkratna vezava in dvosmerna vezava služita različnim namenom pri upravljanju interakcije med pogledom in ViewModel.
Enkratna vezava
Enkratna vezava se uporablja za prenos podatkov iz ViewModela v pogled samo enkrat, ko je nastavitev vezavnega vira. Po tem začetnem prenosu vezava ne spremlja sprememb v lastnostih ViewModela in ne posodobi pogleda, razen če se sam vezivni vir ponastavi. Ta način je uporaben za polja, ki so nastavljiva, vendar se po nastavitvi ne spreminjajo pogosto. Na primer, v MVVMcross se enkratna vezava uporablja za nastavitev statičnega besedila iz jezikovnih datotek, saj uporabnik običajno enkrat izbere jezik in ga le redko spremeni [1] [10].
dvosmerna vezava
Dvosmerna vezava na drugi strani vzpostavlja neprekinjeno, dvosmerno povezavo med pogledom in ViewModel. Spremembe v pogledu ali posodobitvam sprožilca ViewModel v drugem. Ta način je še posebej uporaben pri urejanju obstoječih podatkov, kot je izpolnjevanje obrazcev, kjer se morajo v realnem času odražati tako uporabnikov vnos kot vse spremembe iz ViewModela. Dvosmerna vezava se običajno uporablja v mvvmcrossu in pogosto služi kot privzeti način za nove vezi [1] [2].
Ključne razlike
-Smer pretoka podatkov: Enkratna vezava samo enkrat posodablja pogled iz ViewModela, dvosmerna vezava pa posodablja tako pogled kot ViewModel neprekinjeno.
-Sprememba spremljanja: Enkratna vezava po začetni posodobitvi ne spremlja sprememb, medtem ko dvosmerna vezava nenehno spremlja in posodablja oba konca.
-Primeri uporabe: Enkrat je idealen za statične ali redko spreminjajoče se podatke, medtem ko je dvosmerna bolj primerna za interaktivne oblike ali dinamično izmenjavo podatkov.
Če povzamemo, se enkratna vezava uporablja za statično ali začetno nastavitev podatkov, medtem ko se dvosmerna vezava uporablja za interaktivne scenarije, kjer morata tako pogled kot ViewModel v realnem času odražati spremembe drug drugega.
Navedbe:[1] https://www.mvvmcross.com/documentation/fundamentals/data----
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-taget.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data---inding
[4] https://softwareengineering.stackexchange.com/questions/322450/how-does-two-way-data----ding-differ-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-android-project/underranding-the-data---sintax
[7] https://stackoverflow.com/Questions/13504906/what-is-two-way-vezanje
[8] https://github.com/mvvmcross/mvvmcross/isissue/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/