MVVMCROSS vienreizēja saistīšanās un divvirzienu saistīšana kalpo atšķirīgiem mērķiem, pārvaldot mijiedarbību starp skatu un skatuModeli.
Vienreizēja iesiešana
Vienreizēju iesiešanu izmanto, lai pārsūtītu datus no ViewModel uz skatu tikai vienu reizi, kad tiek iestatīts iesiešanas avots. Pēc šīs sākotnējās pārsūtīšanas iesiešana netiek uzraudzīta ViewModel īpašībās un neatjaunina skatu, ja vien pats saistošais avots netiek atiestatīts. Šis režīms ir noderīgs laukiem, kas ir konfigurējami, bet pēc iestatīšanas bieži nemainās. Piemēram, MVVMCross statiskā teksta iestatīšanai no valodas failiem tiek izmantota vienreizēja iesiešana, jo lietotājs parasti vienreiz izvēlas valodu un reti to maina [1] [10].
divvirzienu iesiešana
No otras puses, divvirzienu iesiešana izveido nepārtrauktu, divvirzienu savienojumu starp skatu un skatu modeli. Izmaiņas skata vai skataModel sprūda atjauninājumos otrā. Šis režīms ir īpaši noderīgs, rediģējot esošos datus, piemēram, veidlapu aizpildīšanu, kur gan lietotāja ievade, gan visas izmaiņas no ViewModel ir jāatspoguļo reālā laikā. Divvirzienu iesiešanu parasti izmanto MVVMCROSS un bieži kalpo kā noklusējuma režīms jauniem iesiešanas režīmam [1] [2].
Galvenās atšķirības
-Datu plūsmas virziens: Vienreizēja iesiešana tikai vienreiz atjaunina skatu no skataModeļa, savukārt divvirzienu iesiešana nepārtraukti atjaunina gan skatu, gan skatuModeli.
-Mainīt uzraudzību: vienreizēja iesiešana netiek uzraudzīta pēc sākotnējās atjaunināšanas, turpretī divvirzienu iesiešana nepārtraukti uzrauga un atjaunina abus galus.
-Lietošanas gadījumi: Vienreizējs ir ideāli piemērots statiskiem vai reti mainīgiem datiem, turpretī divvirzienu ir labāk piemērots interaktīvām formām vai dinamiskai datu apmaiņai.
Rezumējot, vienreizēja saistīšanās tiek izmantota statiskai vai sākotnējai datu iestatīšanai, savukārt divvirzienu saistīšanās tiek izmantota interaktīviem scenārijiem, kur gan skata, gan skataModel ir jāatspoguļo viens otra izmaiņas reāllaikā.
Atsauces:[1] https://www.mvvmcross.com/documentation/fundamentals/data
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-tonging-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data saistoši
[4.]
[5] https://stackoverflow.com/questions/17156368/
.
[7] https://stackoverflow.com/questions/13504906/what-is-two-way saisšana
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data
[10] https://stackoverflow.com/questions/48910503/binding-mode-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/