MVVMCROSS håndterer opdateringer, når du bruger engangsbinding ved at overføre data fra ViewModel til visningen kun én gang, når bindingskilden oprindeligt er indstillet. Efter denne indledende overførsel overvåger bindingen ikke aktivt ændringsmeddelelser eller begivenheder fra ViewModel. Derfor afspejles eventuelle efterfølgende ændringer i ViewModel's egenskab ikke i visningen, medmindre selve bindende kilde nulstilles eller geninitialiseres.
Nøglepunkter for engangsbinding i MVVMCross:
1. Indledende dataoverførsel: Binding overfører data fra ViewModel til visningen, når bindingen først er etableret. Dette er typisk nyttigt for felter, der er konfigurerbare, men ændrer sig ikke ofte, når de er indstillet.
2. Ingen kontinuerlig overvågning: I modsætning til tovejs eller envejsbindinger overvåger engangsbindinger ikke kontinuerligt visningen for ændringer. Dette betyder, at hvis ViewModel's ejendom ændres efter den indledende binding, opdateres visningen ikke automatisk.
3. Brug sager: Engangsbinding bruges ofte i scenarier, hvor dataene er statiske eller sjældent ændringer, såsom at indstille statisk tekst fra sprogfiler. Når et sprog er valgt, er det usædvanligt for brugeren at ændre det ofte, hvilket gør engangsbinding velegnet til sådanne tilfælde [1].
4. nulstilling af bindingskilden: Hvis bindingskilden nulstilles eller reinitialiseres, overfører engangsbindingen de nye data fra ViewModel til visningen igen. Dette kræver imidlertid eksplicit handling for at nulstille den bindende kilde.
5. Begrænsninger i dynamiske synspunkter: I dynamiske synspunkter, såsom dem, der bruger `MVXRecyclerview`, kan engangsbindinger muligvis ikke opføre sig som forventet, hvis visningerne genanvendes. I sådanne tilfælde kan bindingen evalueres, når synspunkter genbruges, hvilket kan føre til uventet opførsel [6].
I sammendraget er MVVMCross's engangsbinding designet til scenarier, hvor data er indstillet en gang og ikke behøver at opdateres dynamisk. Det forenkler den bindende infrastruktur ved at undgå kontinuerlig overvågning af ViewModel for ændringer, men det kræver manuel intervention for at opdatere visningen, hvis ViewModel's data ændres efter den indledende binding.
Citater:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/465558177/mvvmcross-opdates-to-bound-droperty-in-view-not-propaging-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-til-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-matterns-for-asynchronous-mvvm-applikations-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-sising-app-and-setup