V MVVMcross sta enkratna vezava in enosmerna vezava dva različna načina vezave podatkov, ki služita različnim namenom.
Enkratna vezava
Enkratno vezavno prenaša podatke iz ViewModela v pogled samo enkrat, ko je sprva nastavljen vezavni vir. Po tem začetnem prenosu vezava ne spremlja sprememb v ViewModelu 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 je za uporabniki običajno, da enkrat izberejo jezik in ga ne spremenijo pogosto [1].
Enostna vezava
Po drugi strani enosmerna vezava nenehno posodablja pogled, kadar se spremeni ustrezna lastnost v ViewModelu. To pomeni, da se bodo morebitne spremembe lastnosti ViewModel samodejno odražale v pogledu. Vendar spremembe, ki so bile izvedene neposredno na pogled, ne vplivajo na ViewModel. Enosmerna vezava je uporabna pri prikazu podatkov, ki izvirajo iz dinamičnega vira, kot so podatki senzorjev ali omrežni viri, kjer naj bi pogled odražal najnovejše stanje ViewModela, vendar mu ni treba poslati posodobitev [1].
Ključne razlike
-Posodobitev frekvence: Enkratna vezava posodobi pogled samo enkrat ob nastavitvi, medtem ko enosmerna vezava neprekinjeno posodablja pogled, kadar se ViewModel spremeni.
-Sprememba spremljanja: Enkratna vezava ne spremlja sprememb v ViewModel po začetni nastavitvi, medtem ko enosmerna vezava aktivno posluša spremembe v ViewModel.
-Primeri uporabe: Enkrat je idealen za statične ali redko spreminjajoče se podatke, medtem ko je enosmerna bolj primerna za dinamične podatke, ki jih je treba prikazati v realnem času, ne da bi uporabniška interakcija vplivala na ViewModel.
Če povzamemo, medtem ko oba načina prenašata podatke iz ViewModela na pogled, enkratna vezava to naredi samo enkrat in ne spremlja sprememb, medtem ko enosmerna vezava nenehno posodablja pogled na podlagi sprememb ViewModela.
Navedbe:[1] https://www.mvvmcross.com/documentation/fundamentals/data----
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-taget.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default----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-android-project/underranding-the-data---sintax
[7] https://www.mvvmcross.com/documentation/advanced/custom-tata----inding
[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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/