Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako MVVMCross spracúva aktualizácie pri používaní jednorazovej väzby


Ako MVVMCross spracúva aktualizácie pri používaní jednorazovej väzby


MVVMCross spracováva aktualizácie pri použití jednorazovej väzby prenosom údajov z programu ViewModel do zobrazenia iba raz, keď je spočiatku nastavený zdroj viazania. Po tomto počiatočnom prenose väzba aktívne monitoruje zmenu správ alebo udalostí z programu ViewModel. Preto akékoľvek následné zmeny vlastnosti spoločnosti ViewModel sa neodrážajú v pohľade, pokiaľ sa samotný zdroj viazania resetuje alebo reinicializuje.

Kľúčové body jednorazovej väzby v MVVMCross:

1. Počiatočný prenos údajov: Viazané prenáša údaje z pohľadu ViewModel do pohľadu pri prvom stanovení väzby. Toto je zvyčajne užitočné pre polia, ktoré sú konfigurovateľné, ale po nastavení sa často nemenia.

2. Žiadne kontinuálne monitorovanie: Na rozdiel od obojsmerných alebo jednosmerných väzieb, jednorazové väzby nepretržite monitorujú pohľad na zmeny. To znamená, že ak sa vlastnosť ViewModel zmení po počiatočnej väzbe, zobrazenie sa nebude automaticky aktualizovať.

3. Prípady použitia: Jednorazová väzba sa bežne používa v scenároch, v ktorých sú údaje statické alebo zriedkavo mení, napríklad nastavenie statického textu z jazykových súborov. Po výbere jazyka je neobvyklé, že používateľ ho často mení, čím sa jednorazová väzba dostane pre takéto prípady [1].

4. Resetovanie viazaného zdroja: Ak je zdroj viazania resetovaný alebo reinitializovaný, jednorazová väzba prenesie nové údaje z programu ViewModel znova do zobrazenia. Vyžaduje si to však explicitnú akciu na resetovanie viazaného zdroja.

5. Obmedzenia v dynamických pohľadoch: V dynamických pohľadoch, ako napríklad tie, ktoré používajú `MVXRecYcLerview`, sa jednorazové väzby nemusia správať podľa očakávania, ak sa recyklujú pohľady. V takýchto prípadoch môže byť väzba prehodnotená, keď sa znovu použijú názory, čo môže viesť k neočakávanému správaniu [6].

Stručne povedané, jednorazová väzba MVVMCross je určená pre scenáre, v ktorých sú údaje nastavené raz a nemusia sa dynamicky aktualizovať. Zjednodušuje väzobnú infraštruktúru vyhýbaním sa nepretržitému monitorovaniu ViewModel pre zmeny, ale vyžaduje si manuálny zásah na aktualizáciu pohľadu, ak sa údaje ViewModel zmenia po počiatočnej väzbe.

Citácie:
[1] https://www.mvvmcross.com/documentation/funmamentals/data-binding
[2] https://www.mvvmcross.com/documentation/funmamentals/dependency-injekcia
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/funmamentals/MVVM?View=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-pdates-bound-property-in-view-view-not-propagating-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-netime-in-mvxrecycleview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
Https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programing-patterns-for-asynchronous-mvvvm-applications-ata-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/funmamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/custoughising-using-app-and-setup