MVVMCrossissa kertaluonteinen sitoutuminen ja yksisuuntainen sitoutuminen ovat kaksi erillistä datan sitomismoodia, jotka palvelevat erilaisia tarkoituksia.
kertaluonteinen sidonta
Kertaluonteinen sitoutuminen siirtää tietoja ViewModelista näkymään vain kerran, kun sitoutumislähde on alun perin asetettu. Tämän alkuperäisen siirron jälkeen sidonta ei seuraa muutoksia ViewModelissa eikä päivitä näkymää, ellei itse sidontalähde nollata. Tämä tila on hyödyllinen kentälle, jotka ovat konfiguroitavissa, mutta eivät muutu usein niiden asettamisen jälkeen. Esimerkiksi MVVMCrossissa kertaluonteinen sidonta käytetään staattisen tekstin asettamiseen kielitiedostoista, koska käyttäjien on yleistä valita kieli kerran eikä muuttaa sitä usein sen jälkeen [1].
yksisuuntainen sidonta
Yhdensuuntainen sidonta toisaalta päivittää näkymän jatkuvasti, kun ViewModel-vastaava ominaisuus muuttuu. Tämä tarkoittaa, että kaikki näkymämallin ominaisuuden muutokset heijastuvat automaattisesti näkymässä. Suoraan näkymään tehdyt muutokset eivät kuitenkaan vaikuta näkymämalliin. Yhdensuuntainen sidonta on hyödyllistä, kun näytät dynaamisesta lähteestä, kuten anturitiedot tai verkkorisut, joissa näkymän tulisi heijastaa ViewModel-tilaa, mutta sen ei tarvitse lähettää päivityksiä takaisin [1].
keskeiset erot
-Päivitä taajuus: Kertaluonteinen sidonta päivittää näkymän vain kerran asennuksessa, kun taas yksisuuntainen sidonta päivittää näkymän jatkuvasti aina, kun ViewModel muuttuu.
-Muutosvalvonta: Kertaluonteinen sitoutuminen ei seuraa näkymämallin muutoksia alkuperäisen asennuksen jälkeen, kun taas yksisuuntainen sitoutuminen kuuntelee aktiivisesti ViewModel-muutoksia.
-Käyttötapaukset: Kerta-aika on ihanteellinen staattiseen tai harvoin muuttamiseen dataan, kun taas yksisuuntainen sopii paremmin dynaamiseen tietoon, joka on näytettävä reaaliajassa ilman käyttäjän vuorovaikutusta, joka vaikuttaa ViewModeliin.
Yhteenvetona voidaan todeta, että vaikka molemmat moodit siirtävät tietoja näkymämallista näkymään, kertaluonteinen sidonta tekee niin vain kerran eikä tarkkaile muutoksia, kun taas yksisuuntainen sidonta päivittää näkymän jatkuvasti ViewModel-muutosten perusteella.
Viittaukset:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvmcross-default-binding-mode-used-in-a-
[4] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
.
.
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
.
.