Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak MVVMCross zpracovává aktualizace při použití jednorázového vazby


Jak MVVMCross zpracovává aktualizace při použití jednorázového vazby


MVVMCross zpracovává aktualizace při použití jednorázového vazby přenosem dat z ViewModel do pohledu pouze jednou, když je zdroj vazeb původně nastaven. Po tomto počátečním přenosu vazba aktivně monitoruje změny zpráv nebo událostí z ViewModel. Proto se žádné následné změny ve vlastnictví ViewModelu v pohledu nerozhodly, pokud není samotný zdroj vazebného zdroje resetován nebo znovu inicializován.

Klíčové body jednorázové vazby v mvvmcross:

1. Počáteční přenos dat: Vazebné převody přenáší data z viewModelu do pohledu, když je vazba poprvé stanovena. To je obvykle užitečné pro pole, která jsou konfigurovatelná, ale po nastavení se často nemění.

2. Žádné nepřetržité monitorování: Na rozdíl od obousměrných nebo jednosměrných vazeb, jednorázové vazby nepřetržitě monitorují změny ViewModel. To znamená, že pokud se vlastnost ViewModel změní po počáteční vazbě, zobrazení nebude automaticky aktualizováno.

3. Případy použití: Jednorázová vazba se běžně používá ve scénářích, kde jsou data statická nebo jen zřídka mění, jako je nastavení statického textu z jazykových souborů. Jakmile je jazyk vybrán, je neobvyklé, že jej uživatel často mění, takže jednorázová vazba je vhodná pro takové případy [1].

4. Resetování zdroje vazby: Pokud je zdroj vazeb resetován nebo resetován, jednorázová vazba přeneste nová data z ViewModelu znovu do pohledu. To však vyžaduje explicitní akce k resetování zdroje vazby.

5. Omezení v dynamických pohledech: V dynamických pohledech, jako jsou ty, které používají „mvxRecyclerView“, se jednorázové vazby nemusí chovat podle očekávání, pokud jsou pohledy recyklovány. V takových případech může být vazba přehodnocena, protože názory jsou znovu použity, což může vést k neočekávanému chování [6].

Stručně řečeno, jednorázová vazba MVVMCrossu je navržena pro scénáře, kde jsou data nastavena jednou a nemusí být dynamicky aktualizována. Zjednodušuje vazebnou infrastrukturu tím, že se zabrání nepřetržitému sledování ViewModel pro změny, ale vyžaduje manuální zásah k aktualizaci pohledu, pokud se data ViewModel změní po počáteční vazbě.

Citace:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-opdates-to-bound-property-in-view-not-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxRecyclerView
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-synchrons-mvvm-application-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/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/customizing-using-app-and-setup