MVVMcross obdela posodobitve, ko uporablja enkratno vezavo s prenosom podatkov iz ViewModela na pogled samo enkrat, ko je na začetku nastavljen vezavni vir. Po tem začetnem prenosu vezava ne spremlja aktivno spreminjanja sporočil ali dogodkov iz ViewModela. Zato se vsake nadaljnje spremembe lastnosti ViewModela ne bodo odražale v pogledu, razen če se sam vezivni vir ponastavi ali ponovno pojavi.
Ključne točke enkratne vezave v MVVMcross:
1. Začetni prenos podatkov: vezava prenaša podatke iz ViewModela v pogled, ko je vezava prvič vzpostavljena. To je običajno koristno za polja, ki so nastavljiva, vendar se po nastavitvi ne spreminjajo pogosto.
2. Brez neprekinjenega spremljanja: Za razliko od dvosmernih ali enosmernih vezi enkratne vezi ne spremljajo vidnega modela za spremembe. To pomeni, da če se lastnost ViewModela po začetni vezavi spremeni, pogled ne bo samodejno posodobljen.
3. Primeri uporabe: Enkratna vezava se običajno uporablja v scenarijih, kjer so podatki statični ali redko spreminjajo, na primer nastavitev statičnega besedila iz jezikovnih datotek. Ko je jezik izbran, je uporabnik redko, da ga pogosto spremeni, zaradi česar je enkratna vezava primerna za take primere [1].
4. Ponastavitev vezivnega vira: Če je vezavni vir ponastavljen ali ponovni, bo enkratna vezava nove podatke prenesla iz ViewModela v pogled. Vendar to zahteva izrecno dejanje, da se ponastavi zavezujoči vir.
5. Omejitve v dinamičnih pogledih: V dinamičnih pogledih, kot so tisti, ki uporabljajo `mvxrecyclerView`, se enkratne vezi ne morejo obnašati, kot je bilo pričakovano, če se pogledi reciklirajo. V takih primerih se lahko vezava ponovno oceni, saj se pogledi ponovno uporabljajo, kar lahko privede do nepričakovanega vedenja [6].
Če povzamemo, je enkratna vezava MVVMCrossa zasnovana za scenarije, kjer so podatki nastavljeni enkrat in jih ni treba posodabljati dinamično. Poenostavi vezavno infrastrukturo, tako da se izogne neprekinjenemu spremljanju ViewModela za spremembe, vendar potrebuje ročni poseg, da posodobite pogled, če se podatki ViewModela po začetni vezavi spremenijo.
Navedbe:[1] https://www.mvvmcross.com/documentation/fundamentals/data----
[2] https://www.mvvmcross.com/documentation/fundamentals/Dependency-Inection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross updates-to-bound-property-in-view-not-propaging-to-property-in-inviewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-taget.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerView
[7] https://github.com/mvvmcross/mvvmcross/isissue/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-asynchrous-mvvmplications-applications-data-vezanje
[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-using-app-and-setup