V MVVMCrossu nejsou požadované a vázané podmínky přímo použitelné, protože jsou v jádru ASP.NET. Pochopení jejich rolí v jádru ASP.NET však může pomoci objasnit, jak by se podobné koncepty mohly aplikovat v MVVMCross.
Asp.net Context Context
- PožadovanýmTribute: Tento atribut zajišťuje, že vlastnost není po nulové nebo prázdné po vázání modelu. Používá se primárně pro účely validace, což zajišťuje, že povinná pole jsou vyplněna ve formách nebo scénářích zadávání dat [1] [3] [6].
- BindRequiredAttribute: Tento atribut zajišťuje, že vlastnost je přítomna v příchozích datech během vazby modelu. Na rozdíl od požadované kontroly kontroluje přítomnost vlastnosti v údajích o žádosti, nejen jeho nullabilita [1] [3] [4].
MVVMCross Context
V MVVMCrossu je kladen důraz na vazbu dat mezi pohledem a ViewModel. Rámec nepoužívá přímo požadované ani vázané atributy. Místo toho se spoléhá na směnné režimy, jako je Oneway nebo Twoway pro správu synchronizace dat mezi pohledem a ViewModel [2] [7].
- Vazebné režimy v mvvmcross:
- Oneway: Data proudí z ViewModelu k pohledu.
- Twoway: Data proudí oběma způsoby mezi pohledem a ViewModel. Toto je výchozí režim pro vlastní vazby v mvvmcross [7].
Chcete -li dosáhnout podobné funkčnosti jako požadované nebo vázání v MVVMCross, byste obvykle implementovali ověřovací logiku ve svém ViewModel nebo použili vlastní vazby, abyste zajistili správné aktualizace určitých vlastností. Například můžete použít inotifyPropertyChanged k oznámení pohledu na změny ve ViewModel a zajistit, aby data byla vždy aktuální [2] [8].
Implementace ověření v mvvmcross
Zatímco MVVMCross přímo nepodporuje požadované ani vázání, můžete ověřit ověřením kontrolou nulových nebo prázdných hodnot ve vlastnostech vašeho ViewModel. To lze provést ručně nebo pomocí ověřovacích rámců, které se integrují s MVVMCross.
Shrnutí
Stručně řečeno, i když jsou požadovány a vázány, jsou specifické pro jádro ASP.NET pro zajištění přítomnosti a ověření dat, MVVMCross spoléhá na své vazebné mechanismy a logiku vlastní validace pro správu integrity dat. Pokud potřebujete zajistit, aby určitá data byla přítomna nebo platná v MVVMCross, obvykle byste tuto logiku implementovali ve svém ViewModelu nebo prostřednictvím vlastních vazeb.
Citace:[1] https://blog.dominikasikorska.pl/required-vs-bindrequired/
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://dotnetttorials.net/lesson/bindnever-and-bindrequired-attribute-in-sp-core-mvc/
[4] https://www.strathweb.com/2017/12/required-and-bindrequired-in-snet-core-mvc/
[5] https://www.mvvmcross.com/documentation/plugins/methodbinding
[6] https://towardsdev.com/Mastering-the-use-of-RequiredAttribute-a-detailed-comparison-of-required-vs-bindrequired-b3feaf108ef5
[7] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-Mode-Used-in-A-Project
[8] https://www.mvvmcross.com/documentation/advanced/custom-data-binding