I MVVMCROSS tjener engangsbinding og tovejsbinding forskellige formål med at styre samspillet mellem visningen og visningsmodellen.
Engangsbinding
Engangsbinding bruges til kun at overføre data fra visningsmodellen til visningen én gang, når bindingskilden er indstillet. Efter denne indledende overførsel overvåger bindingen ikke ændringer i ViewModel's egenskaber og opdaterer ikke visningen, medmindre selve bindingskilden nulstilles. Denne tilstand er nyttig til felter, der kan konfigureres, men ændres ikke ofte efter at have været indstillet. I MVVMCROSS bruges for eksempel engangsbinding til at indstille statisk tekst fra sprogfiler, da brugeren typisk vælger et sprog en gang og ændrer sjældent det bagefter [1] [10].
To-vejs binding
To-vejs binding opretter på den anden side en kontinuerlig, tovejsforbindelse mellem visningen og ViewModel. Ændringer i enten visningen eller ViewModel Trigger -opdateringerne i den anden. Denne tilstand er især nyttig, når redigering af eksisterende data, såsom udfyldning af formularer, hvor både brugerens input og eventuelle ændringer fra ViewModel skal afspejles i realtid. To-vejs binding bruges ofte i MVVMCROSS og fungerer ofte som standardtilstand for nye bindinger [1] [2].
Nøgleforskelle
-Retning af dataflow: Engangsbinding opdaterer kun visningen fra ViewModel én gang, mens tovejsbinding opdaterer både visningen og ViewModel kontinuerligt.
-Skift overvågning: Engangsbinding overvåger ikke ændringer efter den indledende opdatering, mens tovejsbinding kontinuerligt overvåger og opdaterer begge ender.
-Brug sager: Engang er ideel til statiske eller sjældent skiftende data, mens tovejs er bedre egnet til interaktive former eller dynamisk dataudveksling.
Sammenfattende bruges engangsbinding til statisk eller indledende datasæt, mens tovejsbinding bruges til interaktive scenarier, hvor både visning og visningsmodel skal afspejle hinandens ændringer i realtid.
Citater:[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-two-way-data-bindende-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/
[7] https://stackoverflow.com/questions/13504906/what-is-two-way-bindende
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-bindende-en-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-til-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/