Vienkartinis įrišimas „MVVMCross“ yra naudingas surišimo režimas, perkeliantis reikšmes iš „ViewModel“ į rodinį tik vieną kartą, kai nustatomas surišimo šaltinis. Jis aktyviai nesilaiko „ViewModel“ pakeitimų, tai reiškia, kad jis neatnaujina rodinio, jei po pradinio surišimo keičiasi „ViewModel“ savybės. Čia yra keletas apribojimų ir aspektų, susijusių su vienkartiniu įrišimu:
1. Nėra nuolatinių atnaujinimų: Pagrindinis vienkartinio įrišimo apribojimas yra tas, kad jis nuolat neatnaujina rodinio, pagrįsto „ViewModel“ pakeitimais. Dėl to jis yra mažiau tinkamas dinaminiams duomenims, kuriuos reikia atsispindėti realiuoju laiku vartotojo sąsajoje.
2. Statiniai duomenys: Vienkartinis įrišimas geriausiai naudojamas statiniams ar tik skaitymams, kurie dažnai nesikeičia. Pvz., Jis dažnai naudojamas statiniam tekstui nustatyti iš kalbos failų, nes kalbos pasirinkimas paprastai atliekamas vieną kartą ir dažnai nekeičiamas [1].
3. Recyclerview ir panašūs valdikliai: tokiuose valdikliuose kaip „MVXRecyclerView“ vienkartiniai įrišimai gali būti ne taip, kaip tikėtasi dėl peržiūros perdirbimo. Kai vartotojas slenka per sąrašą, rodiniai perdirbami ir pakartotinai naudojami, o tai gali sukelti vienkartinių įrišimų pakartotinį ugnį, veiksmingai elgtis kaip ištisiniai įrišimai [4]. Tai gali sukelti netikėtą elgesį, jei jis nebus tinkamai valdomas.
4. Veiklos aspektai: Nors vienkartiniai įrišimai nesilaiko pakeitimų, jie iš esmės nepateikia našumo problemų. Tačiau jei ji plačiai naudojama sudėtinguose išdėstymuose arba su daugybe įrišimų, pradinė sąranka gali prisidėti prie lėtesnio UI atvaizdavimo laiko, palyginti su kitais surišimo režimais [9].
5. Siūlų sauga: MVVMCROSS įrišimo, įskaitant vienkartines įrišimus, gali paveikti sriegimo problemas, jei jie nebus tinkamai valdomi. Pavyzdžiui, jei įrišimai vykdomi darbuotojo sriegyje, tai gali sukelti netikėtą elgesį, nebent tinkamai sinchronizuotų su UI gija [5] [3].
Apibendrinant galima pasakyti, kad nors vienkartinis įrišimas yra naudingas statiniams duomenims, jis nėra idealus dinaminiams duomenims ar scenarijams, kai reikia nuolatinių atnaujinimų. Be to, norint išvengti netikėtų rekonstracijų, norint išvengti netikėtų rekonstracijų, jo elgsenai tokiuose vartotojo sąsajose kaip „RecyclerView“.
Citatos:[1] https://www.mvvmcross.com/documentation/fundamentals/data-dinding
[2] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[3] https://github.com/mvvmcross/mvvmcross/issues/1545
[4] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxRecyclerview
[5] https://www.mvvmcross.com/mvvmcross-4.4.2/
[6] https://github.com/mvvmcross/mvvmcross/issues/29
[7] https://stackoverflow.com/questions/17156368/
[8] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-inding/binding-mode?view=net-maui-9.0
[9] https://github.com/mvvmcross/mvvmcross/issues/1342
[10] https://www.mvvmcross.com/mvvmcross-5-release/