Použití jednorázové vazby v MVVMCrossu nabízí několik výhod oproti jiným režimům vazebných, zejména ve specifických scénářích:
1. Snížená režie: Jednorázová vazba je užitečná, pokud potřebujete nastavit hodnotu z viewModelu k pohledu pouze jednou, aniž byste nepřetržitě monitorovali změny. To snižuje režii spojenou s udržováním vazby, protože nevyžaduje, aby rámec poslouchal aktualizace z ViewModel. To je zvláště výhodné pro statická data, která se nezmění, jakmile jsou nastavena, například text z jazykových souborů [1] [3].
2. Výkon v recyklovaných pohledech: Zatímco jednorázové vazby mohou být problematické při recyklovaných pohledech, jako jsou takové v `mvxRecyclerView`, jsou ideální pro scénáře, kde nejsou pohledy recyklovány nebo kde jsou data statická a nemusí být dynamicky aktualizována. V případech, kdy jsou pohledy recyklovány, se však jednorázové vazby nemusí chovat podle očekávání, protože názory jsou znovu použity a odrazovány, jak se objevují na obrazovce [7].
3. Zjednodušená vazebná infrastruktura: Protože jednorázové vazby se aktualizují pouze tehdy, když se mění vazebné kontext, zjednodušují vazebnou infrastrukturu tím, že eliminují potřebu sledovat změny zdroje. To může vést k čistšímu kódu a méně potenciálním problémům souvisejícím s nepřetržitými aktualizacemi [4].
4. Vhodné pro data pouze pro čtení: Jednorázová vazba je vhodná pro zobrazení dat pouze pro čtení, která jsou známa v době inicializace a nemění se. To zahrnuje scénáře, jako je zobrazení statických informací, jako jsou hodiny restaurace, kde jsou data nastavena jednou a nepotřebují další aktualizace [3].
5. Konzistence se statickými daty: V aplikacích, kde jsou určitá data statická a často se nemění, jednorázová vazba zajišťuje, že tato data jsou správně nastavena bez zbytečných aktualizací. To udržuje konzistenci v uživatelském rozhraní bez režijního monitorování [1] [3].
Stručně řečeno, jednorázová vazba v MVVMCross je prospěšná při řešení statických dat, která nevyžadují nepřetržité aktualizace, nabízí sníženou režii a zjednodušenou správu vazby. Nemusí však být vhodný pro dynamické nebo často měnící se data nebo ve scénářích, kde jsou pohledy recyklovány.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-Mode-Used-in-A-Project
[3] https://stackoverflow.com/questions/25460030/WHEN-TOUSUSE-MVVMCROSS-DATA-Bindings
[4] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/17156368/
[7] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxRecyclerView
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle