Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan skiller engangsbinding seg fra enveisbinding i MVVMCROSS


Hvordan skiller engangsbinding seg fra enveisbinding i MVVMCROSS


I MVVMCROSS er engangsbinding og enveisbinding to distinkte databindingsmodus som tjener forskjellige formål.

Engangsbinding

Engangsbinding overfører data fra ViewModel til visningen bare en gang, når den bindende kilden opprinnelig er satt. Etter denne første overføringen overvåker ikke bindingen endringer i ViewModel og oppdaterer ikke visningen med mindre selve bindingskilden blir tilbakestilt. Denne modusen er nyttig for felt som er konfigurerbare, men ikke endres ofte etter at de er satt. For eksempel, i MVVMCROSS, brukes engangsbinding for å sette statisk tekst fra språkfiler, da det er vanlig at brukerne velger et språk en gang og ikke endrer det ofte deretter [1].

Enveisbinding

Enveis binding, derimot, oppdaterer kontinuerlig visningen når den tilsvarende egenskapen i ViewModel endres. Dette betyr at eventuelle endringer i ViewModels eiendom automatisk vil gjenspeiles i visningen. Endringer som er gjort direkte til visningen påvirker imidlertid ikke ViewModel. Enveisbinding er nyttig når du viser data som kommer fra en dynamisk kilde, for eksempel sensordata eller nettverksfeeds, der visningen skal gjenspeile den nyeste tilstanden til ViewModel, men ikke trenger å sende oppdateringer tilbake til den [1].

viktige forskjeller

-Oppdater frekvens: Engangsbinding oppdaterer visningen bare en gang ved oppsett, mens enveis binding kontinuerlig oppdaterer visningen når ViewModel endres.
-Endringsovervåking: Engangsbinding overvåker ikke endringer i ViewModel etter det første oppsettet, mens enveisbinding aktivt lytter for endringer i ViewModel.
-Bruk tilfeller: Engang er ideell for statiske eller sjelden endrede data, mens enveis er bedre egnet for dynamiske data som må vises i sanntid uten brukerinteraksjon som påvirker ViewModel.

Oppsummert, mens begge modusene overfører data fra ViewModel til visningen, gjør engangsbinding det bare en gang og ikke overvåker for endringer, mens enveis binding kontinuerlig oppdaterer visningen basert på ViewModel-endringer.

Sitasjoner:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-modus-uste-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-irst-xamarin-app/creating-the-android-project/sulting-the-data-binding-synnntax
[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-binding-Ene-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/