A null referencia -kivételek hibakeresése, ha az MVVMCross -ban a kötési nézetek több lépést tartalmaznak a probléma azonosítására és megoldására. Itt található egy részletes útmutató a probléma megközelítéséhez:
1. Határozza meg a kivétel forrását **
- Ellenőrizze a verem nyomkövetését: A verem nyomkövetése jelzi, hogy hol fordul elő a null referencia -kivétel. Ez lehet az ön véleménye, a modell vagy az mvvmcross -ban.- Általános kérdések: Általános források közé tartozik a nem regisztrált szolgáltatások, a null nézetmodellek vagy a helytelenül konfigurált kötések.
2. Ellenőrizze a ViewModel és a kötési beállítást **
- ViewModel inicializálás: Győződjön meg arról, hogy a nézetmodell megfelelően inicializálódik, és beállítsa a nézetbe. Az MVVMCross -ban ez általában automatikusan megtörténik, de ellenőrizheti azt nézetének „ViewModel” tulajdonságának ellenőrzésével.- Kötési konfiguráció: Győződjön meg arról, hogy a kötések helyesen vannak -e konfigurálva. Használja a `createBindingset` használatát a kötések meghatározásához és annak biztosítása érdekében, hogy a típusok megegyezjenek (például:„ MainView ”és„ MainViewModel ”).
3. Ellenőrizze, hogy vannak -e null referenciák a kötésekben **
- Tulajdonságok útjai: Győződjön meg arról, hogy a kötésekben szereplő tulajdonságok helyesek -e, és hogy a tulajdonságok létezjenek a nézetmodellben. Például, ha kötődik a „Vm => V.MyProperty” -re, ellenőrizze, hogy a „MyProperty” nincs -e nulla, és helyesen van -e meghatározva.- Késő inicializálás: Ha a tulajdonságokat később inicializálják (például a „ViewDidload” -ben), akkor ügyeljen arra, hogy a kötéseket az inicializálás után alkalmazzák.
4. Használjon késleltetett kötést a dinamikus tartalomhoz **
- Ha dinamikusan generál tartalmat vagy ellenőrzést, akkor fontolja meg a „késleltetésű” használatát annak biztosítása érdekében, hogy a kötéseket a nézet teljes kialakítása után alkalmazzák. Ez különösen akkor hasznos, ha az egyedi vezérlőkkel vagy a dinamikus listákkal dolgozik.5. Gondoskodjon a megfelelő NOB regisztrációról **
. Az MVVMCross erre a célra használja az iMvxiocprovider -t.- InitializeLastCance: Ha platformspecifikus NOB regisztrációt végez, akkor ügyeljen arra, hogy a „base.initializeLastchance ()” hívja, hogy elkerülje a [4] -ben leírt kérdéseket.
6. Egyéni kötési kérdések **
- Ha egyedi kötéseket használ, ellenőrizze, hogy a célkötési osztályokat helyesen hajtják végre és regisztrálják -e a `setup.cs" -ben, a „FilltargetFactors” felülbírálásával, amint azt az [5] mutatja.7. hibakeresési technikák **
- Breakpoints: Használjon töréspontokat a nézetmodell és a kötések állapotának ellenőrzéséhez futásidejében.- Naplózás: Engedélyezze az MVVMCross naplózást, hogy részletes információkat szerezzen a kötési műveletekről és a lehetséges hibákról.
8.
- Ha az `mvxasyncCommand` használja, akkor ügyeljen arra, hogy a„ mvx.iocprovider ”inicializálódjon a parancsok készítése előtt, az [1] -ben leírtak szerint. Ez elengedhetetlen az egységteszt -tesztelési forgatókönyvekhez.Ezeknek a lépéseknek a követésével képesnek kell lennie arra, hogy azonosítsa és megoldja a legtöbb null referencia -kivételt az MVVMCross -ban lévő kötésekkel kapcsolatban.
Idézetek:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-stesting-mxvaynccommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-os-and-mvvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-during-binding-with-mvvmcross
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross platform-exceptions-mvxexception-bindingcontext-is-null-during-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxNotifytask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding