Virheenkorjaus NULL -viitepoikkeuksiin, kun MVVMCross -näkemysten sitoutuminen sisältää useita vaiheita ongelman tunnistamiseksi ja ratkaisemiseksi. Tässä on yksityiskohtainen opas lähestyä tätä ongelmaa:
1. Tunnista poikkeuksen lähde **
- Tarkista pinon jäljitys: Pinojälki osoittaa, missä nollaviite poikkeus tapahtuu. Tämä voi olla mielestäsi, katselemalli tai itse MVVMCross.- Yleiset kysymykset: Yleisiä lähteitä ovat rekisteröimättömät palvelut, NULL VIEW -mallit tai väärin määritetyt sidokset.
2. Vahvista ViewModel ja Binding Setup **
- ViewModel -alustus: Varmista, että näkymämalli on alustettu ja asetettu näkymään. MVVMCrossissa tämä tapahtuu yleensä automaattisesti, mutta voit tarkistaa sen tarkistamalla näkymäsi "ViewModel" -ominaisuuden.- Sidontakokoonpano: Varmista, että sidokset on määritetty oikein. Käytä `createBindingset 'määrittääksesi sidokset ja varmista, että tyypit vastaavat (esim." Mainview "ja` mainViewModel`).
3. Tarkista NULL -viitteet sidoksissa **
- Ominaisuusreitit: Varmista, että sidosten ominaisuuspolut ovat oikeat ja että näkymämallissa on ominaisuuksia. Jos esimerkiksi sitoudut `vm => vm.myproperty` -sovellukseen, varmista, että` MyProperty` ei ole nolla ja se on oikein määritelty.- Myöhäinen alustus: Jos ominaisuudet alustetaan myöhemmin (esim. "Näkymälatauksessa"), varmista, että sidoksia käytetään alustuksen jälkeen.
4. Käytä viivästynyttä sidontaa dynaamiseen sisältöön **
- Jos luot dynaamisesti sisältöä tai hallintalaitteita, harkitse `viivealon 'käyttöä sidosten käytön varmistamiseksi, kun näkymä on täysin rakennettu. Tämä on erityisen hyödyllistä, kun työskentelet mukautettujen hallintalaitteiden tai dynaamisten luetteloiden kanssa.5. Varmista oikea IOC -rekisteröinti **
- Palvelun rekisteröinti: Jos käytät palveluja näkymämallissasi, varmista, että ne on rekisteröity KOK -säilöön. MVVMCROSS käyttää `imvxiocprovider` tähän tarkoitukseen.- Alkuperäiskunnat: Jos teet alustakohtaisia IOC-rekisteröintejä, varmista, että soitat "base.initializelastChance ()" välttääksesi aiheet [4] kuvatut kysymykset.
6. Mukautetut sitovat ongelmat **
- Jos käytät mukautettuja sidoksia, tarkista, että kohteen sitoutumisluokat on toteutettu ja rekisteröity oikein `setup.cs` -kohdassa ohittamalla` FillTargetFactores`, kuten kohdassa [5] on esitetty.7. Virheenkorjaustekniikat **
- Breakpoints: Käytä murtopisteitä näkymämallin ja sidosten tilan tarkistamiseen suorituksen aikana.- SKUPAIKKA: Ota MVVMCross -kirjaus käyttöön saadaksesi yksityiskohtaisia tietoja sidontaoperaatioista ja mahdollisista virheistä.
8. MVXasyncCommand Issues **
- Jos käytät `mvxasyncommand`, varmista, että` mvx.iocprovider` alustetaan ennen komentojen rakentamista, kuten julkaisussa [1] on kuvattu. Tämä on ratkaisevan tärkeää yksikkötestausskenaarioissa.Näitä vaiheita noudattamalla sinun pitäisi pystyä tunnistamaan ja ratkaisemaan useimmat NULL -vertailupoikkeukset, jotka liittyvät MVVMCrossin sidoksiin.
Viittaukset:.
.
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
.
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
.
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifytak
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding