Odpravljanje napak NULL referenčnih izjem Pri vezavnih pogledih v MVVMcross vključuje več korakov za prepoznavanje in reševanje vprašanja. Tu je podroben vodnik, kako pristopiti k tej težavi:
1. določite vir izjeme **
- Preverite sled sklada: sled sklada bo označevala, kje se pojavlja NULL referenčna izjema. To bi lahko bilo po vašem mnenju, modelu pogleda ali znotraj samega MVVMcross.- Pogosta vprašanja: Skupni viri vključujejo neregistrirane storitve, modele NULL pogleda ali napačno konfigurirane vezi.
2. Preverite nastavitev ViewModel in vezave **
- Inicializacija ViewModel: Prepričajte se, da je vaš model pogleda pravilno inicializiran in nastavljen na pogled. V MVVMcrossu se to običajno zgodi samodejno, vendar ga lahko preverite tako, da preverite lastnost `ViewModel 'vašega pogleda.- Vezavna konfiguracija: Prepričajte se, da so vezi pravilno konfigurirane. Uporabite `createBindingSet`, da določite vezi in zagotovite, da se vrste ujemajo (npr.` MainView` in `MainViewModel`).
3. Preverite ničelne reference v vezi **
- Poti lastnosti: Prepričajte se, da so poti lastnosti v vaših vezi pravilne in da lastnosti obstajajo na modelu pogleda. Na primer, če se zavezujete na `vm => vm.myProperty`, preverite, ali` myProperty` ni ničen in je pravilno definiran.- Pozno inicializacija: Če se lastnosti pozneje inicializirajo (npr. V `ViewDidload`), zagotovite, da se vezi uporabijo po inicializaciji.
4. Uporabite zapoznelo vezavo za dinamično vsebino **
- Če dinamično ustvarjate vsebino ali kontrole, razmislite o uporabi `DelayBind", da zagotovite, da se vezi o uporabi po celotnem pogledu. To je še posebej koristno pri delu s kontrolami po meri ali dinamičnimi seznami.5. Zagotovite pravilno registracijo IOC **
- Registracija storitev: Če uporabljate storitve v vašem pogledu, se prepričajte, da so registrirane v vseblju MOK. MVVMcross v ta namen uporablja `imvxiocprovider`.- IniciativeLastChance: Če opravljate registracije MOK, specifične za platformo, poskrbite, da pokličete `base.initializeLastChance ()`, da se izognete vprašanjem, kot so opisane v [4].
6. Težave z zavezovanjem po meri **
- Če uporabljate vezi po meri, preverite, ali so vaši ciljni vezivni razredi pravilno izvedeni in registrirani v `setup.cs`, tako da preglasite` fillTargetFactories ', kot je prikazano v [5].7. Tehnike odpravljanja napak **
- Prelomne točke: uporabite prelomne točke za pregled stanja vašega modela in vezi med izvajanjem.- Beleženje: Omogoči beleženje mvvmcross, da dobite podrobne informacije o vezavnih operacijah in morebitnih napakah.
8. MVXASYNCCOMMAND IZDAJA **
- Če uporabljate `mvxasyncCommand`, se prepričajte, da je` mvx.iocprovider` inicializiran pred konstrukcijo ukazov, kot je opisano v [1]. To je ključnega pomena za scenarije testiranja enot.Če sledite tem korakom, bi morali biti sposobni prepoznati in razrešiti večino ničelnih referenčnih izjem, povezanih z ogledom vezi v MVVMcross.
Navedbe:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-mxvasyncCommand/53618570
[2] https://stackoverflow.com/questions/56531225/Problem-with-bing-to-mvxview-with-xamarin-ios-in-mvvmcross
[3] https://github.com/mvvmcross/mvvmcross/isissue/1378
[4] https://stackoverflow.com/questions/18954938/NullReference-Exception-during-bing-with-mvvmcross
[5] https://www.mvvmcross.com/documentation/advanced/custom-tata---inding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxexception-bindingContext-is-null--wonguring-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifyTask
[8] https://www.mvvmcross.com/documentation/fundamentals/data----