MVVMcrossis on ühekordne sidumine ja ühesuunaline sidumine kaks erinevat andmesidumisrežiimi, mis teenivad erinevaid eesmärke.
Ühekordne köide
Ühekordne sidumine annab andmeid ViewModelist vaatele ainult üks kord, kui sidumisallikas on algselt seatud. Pärast seda esialgset ülekannet ei jälgi seondumine ViewModeli 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 sageli pärast nende seadistamist. Näiteks MVVMcrossis kasutatakse ühekordset köitmist keelefailidest staatilise teksti seadmiseks, kuna kasutajad on tavaline, et nad valiksid üks kord keelt ja mitte seda sageli muuta [1].
ühesuunaline köitmine
Ühesuunaline sidumine seevastu värskendab pidevalt vaadet, kui ViewModeli vastav omadus muutub. See tähendab, et ViewModeli atribuudi muudatused kajastuvad automaatselt vaates. Kuid otse vaatesse tehtud muudatused ei mõjuta vaatemodelli. Ühesuunaline sidumine on kasulik dünaamilisest allikast pärinevate andmete kuvamisel, näiteks anduri andmed või võrgusvoogud, kus vaade peaks kajastama ViewModeli uusimaid olekut, kuid ei pea sellele värskendusi saatma [1].
Peamised erinevused
-Värskendamissagedus: ühekordne köide värskendab vaadet ainult üks kord seadistamisel, samal ajal kui ühesuunaline sidumine värskendab vaadet pidevalt, kui ViewModel muutub.
-Muutke jälgimist: ühekordne sidumine ei jälgi pärast esialgset seadistust ViewModeli muutusi, samas kui ühesuunaline sidumine kuulab aktiivselt ViewModeli muutusi.
-Kasutusjuhtumid: ühekordne on ideaalne staatiliste või harva muutmiseks andmete jaoks, samas kui ühesuunaline sobib paremini dünaamiliste andmete jaoks, mida tuleb kuvada reaalajas, ilma et kasutajate interaktsioon mõjutaks ViewModelit.
Kokkuvõtlikult võib öelda, et mõlemad režiimid edastavad andmed ViewModelist vaatesse, ühekordne köitmine ainult üks kord ega jälgi muudatusi, samas kui ühesuunaline köide värskendab vaatemodelli muudatuste põhjal pidevalt vaadet.
Tsitaadid:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
]
]
]
]
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
]
]
]