MVVMCROSS-is on ühekordne sidumine ja kahesuunaline sidumine vaate ja vaatemodelli vastastikuse mõju haldamisel.
Ühekordne köide
Ühekordset sidumist kasutatakse andmete ViewModelist vaatele ülekandmiseks ainult üks kord, kui sidumisallikas on seatud. Pärast seda esialgset ülekannet ei jälgi seondumine ViewModeli omaduste muutusi ega värskenda vaadet, välja arvatud juhul, kui siduv allikas ise lähtestatakse. See režiim on kasulik väljade jaoks, mis on konfigureeritavad, kuid ei muutu pärast seadistamist sageli. Näiteks MVVMcrossis kasutatakse keelefailidest staatilise teksti seadistamiseks ühekordset köitmist, kuna kasutaja valib seda tavaliselt üks kord ja muudab seda hiljem [1] [10].
kahesuunaline köide
Kahesuunaline sidumine seevastu loob vaate ja vaatemodelli vahel pideva kahesuunalise ühenduse. Muudatused vaates või ViewModeli päästiku värskendustes teises. See režiim on eriti kasulik olemasolevate andmete redigeerimisel, näiteks vormide täitmine, kus nii kasutaja sisend kui ka kõik ViewModeli muudatused tuleb kajastada reaalajas. Kahesuunalist sidumist kasutatakse tavaliselt MVVMcrossis ja see toimib sageli uute köidete vaikerežiimina [1] [2].
Peamised erinevused
-Andmevoo suund: ühekordne sidumine värskendab ainult vaatemodelli vaadet üks kord, samal ajal kui kahesuunaline sidumine värskendab nii vaadet kui ka ViewModelit pidevalt.
-Muutke jälgimist: ühekordne sidumine ei jälgi muudatusi pärast esialgset värskendust, samas kui kahesuunaline sidumine jälgib pidevalt ja värskendab mõlemat otsa.
-Kasutusjuhtumid: üks kord on ideaalne staatiliste või harva muutmiseks andmete jaoks, samas kui kahesuunaline sobib paremini interaktiivsete vormide või dünaamilise andmevahetuse jaoks.
Kokkuvõtlikult kasutatakse ühekordset sidumist staatilise või esialgse andmete seadistamiseks, samas kui interaktiivsete stsenaariumide jaoks kasutatakse kahesuunalist sidumist, kus nii vaade kui ka ViewModel peavad kajastama üksteise muutusi reaalajas.
Tsitaadid:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
]
[5] https://stackoverflow.com/questions/17156368/
]
]
[8] https://github.com/mvvmcross/mvvmcross/issues/29
]
]
]
]