Pri uporabi `mvxview` in` mvxViewController` v mvvmcross se lahko pojavi več skupnih pasti. Razumevanje teh vprašanj lahko razvijalcem pomaga, da se jim izognejo in zagotovijo bolj gladko razvoj.
1. Vnesite težave s pretvorbo **
Ena pogosta težava je pretvorba tipa. V vzorcu MVVM lastnosti, ki so opredeljene v ViewModelu, morda ne bodo neposredno potrošni z uporabniškim vmesnikom. Na primer, lastnost slike je lahko bajtna matrika, vendar ga uporabniški vmesnik pričakuje kot vir slike. MVVMcross ponuja vmesnik `imvxvalueConverter` za ravnanje s takšnimi pretvorbami, vendar je potrebno vlivanje, kar je lahko okorno. Splošni razred `mvxvalueConverter` pomaga tako, da vam omogoča izrecno določitev vhodnih in izhodnih vrst [1].2. Upravljanje življenjskega cikla **
Začenši z MVVMcross 5.0, so ViewModels povezani z življenjskim ciklom pogleda, ki zagotavljajo metode, kot so `pojavljajo ()`, `se pojavljajo ()`, `izginjajo ()` in `izginot ()`. Medtem ko te metode ponujajo več nadzora nad stanjem ViewModela, niso 100% zanesljive in nanje lahko vplivajo na platformo specifične dogodke ali logika aplikacij po meri [2] [7]. Zagotavljanje pravilnega ravnanja s temi življenjskimi ciklom je ključnega pomena.3. Zavezujoče težave **
Lahko se pojavijo težave z vezanjem, zlasti pri uporabi pogledov ali kontrol po meri. Na primer, če je ustvarjen nadzor po meri, preden so na voljo podatki ViewModel, je lahko "DataContext" ničen. Uporaba `DelayBind" lahko to pomaga rešiti tako, da zavlečete vezavo, dokler podatki niso na voljo [4].4. Ponovna uporaba ViewModels **
ViewModels v MVVMcrossu, zlasti na iOS -u, se lahko tesno povezujejo s specifičnimi pogledi, kar zmanjša njihovo ponovno uporabo. To se zgodi, ko ViewModels obravnavajo logiko, specifično za ogled, na primer oblikovanje nalepk ali delovanje kot viri podatkov za poglede tabele. Da bi se temu izognili, naj bodo ViewModels osredotočeni na poslovno logiko in uporabite pretvornike ali druge mehanizme za obdelavo transformacij, specifičnih za pogled [3].5. Navigacija, specifična za platformo **
MVVMcross podpira navigacijo med platformi, vendar ima vsaka platforma edinstvene vzorce predstavitve. Na primer na iOS-u lahko uporaba zgodb za pretok zaslona lahko v nasprotju z MVVMcrossovim pristopom med platformami. Najbolje je, da navigacijsko logiko obravnavate v ViewModel in uporabite predstavnike, specifične za platformo, za upravljanje prikazovanja pogledov [5] [9].6. Varnost povezav **
MVVMcross ni varen, kar pomeni, da lahko dele okvira med kompilacijo odstrani. To lahko privede do napak v izvajanju. Če želite to preprečiti, morate namigniti na veznik, da ohranite potrebne dele okvira [6].Z zavedanjem teh potencialnih pasti lahko razvijalci bolje krmarijo po zapletenosti uporabe `mvxview` in` mvxViewController` v aplikacijah MVVMcross.
Navedbe:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-boille-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.mvvmcross.com/mvvmcross-5-release/
[3] https://www.danielhall.io/the-problems-with-mvvm-on-ios
[4] https://stackoverflow.com/questions/56531225/Problem-with-bing-to-mvxview-with-xamarin-ios-in-mvvmcross
[5] https://kerry.lothrop.de/ios-ui-with-mvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/isissue/4286
[7] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-best-practices
[9] https://www.mvvmcross.com/documentation/fundamentals/view-presenters