Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan adskiller engangsbinding sig fra envejsbinding i MVVMCross


Hvordan adskiller engangsbinding sig fra envejsbinding i MVVMCross


I MVVMCROSS er engangsbinding og envejsbinding to forskellige databindingstilstande, der tjener forskellige formål.

Engangsbinding

Engangsbinding overfører data fra ViewModel til visningen kun én gang, når bindingskilden oprindeligt er indstillet. Efter denne indledende overførsel overvåger bindingen ikke ændringer i ViewModel og opdaterer ikke visningen, medmindre selve bindende kilden nulstilles. Denne tilstand er nyttig til felter, der er konfigurerbare, men ændrer sig ikke ofte, når de er indstillet. I MVVMCROSS bruges for eksempel engangsbinding til at indstille statisk tekst fra sprogfiler, da det er almindeligt for brugerne at vælge et sprog en gang og ikke ændre det ofte derefter [1].

Envejsbinding

Envejsbinding opdaterer på den anden side kontinuerligt visningen, når den tilsvarende egenskab i ViewModel ændres. Dette betyder, at eventuelle ændringer i ViewModel's ejendom automatisk afspejles i visningen. Ændringer foretaget direkte til visningen påvirker imidlertid ikke ViewModel. Envejs binding er nyttig, når du viser data, der kommer fra en dynamisk kilde, såsom sensordata eller netværksfeeds, hvor visningen skal afspejle den nyeste tilstand af ViewModel, men ikke behøver at sende opdateringer tilbage til det [1].

Nøgleforskelle

-Opdateringsfrekvens: Engangsbinding opdaterer visningen kun én gang ved opsætning, mens envejsbinding kontinuerligt opdaterer visningen, når ViewModel ændres.
-Skiftovervågning: Engangsbinding overvåger ikke ændringer i ViewModel efter den indledende opsætning, mens envejsbinding aktivt lytter for ændringer i ViewModel.
-Brug sager: Engang er ideel til statiske eller sjældent skiftende data, mens envej er bedre egnet til dynamiske data, der skal vises i realtid uden brugerinteraktion, der påvirker ViewModel.

Sammenfattende, mens begge tilstande overfører data fra ViewModel til visningen, gør engangsbinding det kun én gang og overvåger ikke for ændringer, mens envejs-binding kontinuerligt opdaterer visningen baseret på visningsændringer.

Citater:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
)
[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/
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/