MVVMCross'taki görünümleri bağlarken, null referans istisnalarının hata ayıklama, sorunu tanımlamak ve çözmek için birkaç adım içerir. İşte bu soruna nasıl yaklaşılacağına dair ayrıntılı bir rehber:
1. İstisnanın kaynağını belirleyin **
- Yığın izini kontrol edin: Yığın izi, boş referans istisnasının nerede meydana geldiğini gösterir. Bu sizin görüşünüz, görüntüleyin model veya MVVMcross'un kendisi içinde olabilir.- Yaygın sorunlar: Ortak kaynaklar kayıtlı olmayan hizmetler, boş görünüm modelleri veya yanlış yapılandırılmış bağlamaları içerir.
2. ViewModel ve Bağlama Kurulumu'nu doğrulayın **
- ViewModel başlatma: Görünüm modelinizin düzgün bir şekilde başlatıldığından ve görünümde ayarlandığından emin olun. MVVMCross'ta, bu genellikle otomatik olarak gerçekleşir, ancak görüşünüzün `` ViewModel '' özelliğini kontrol ederek bunu doğrulayabilirsiniz.- Bağlanma Yapılandırması: Bağlamaların doğru yapılandırıldığından emin olun. Bağlamaları tanımlamak ve türlerin eşleştiğinden emin olmak için `createBindingset` kullanın (örneğin,` MainView` ve `MainViewModel ').
3. Bağlantılardaki boş referansları kontrol edin **
- Mülk yolları: Bağlamalarınızdaki mülk yollarının doğru olduğundan ve özelliklerin görünüm modelinde bulunduğundan emin olun. Örneğin, `vm => vm.myproperty` için bağlıysanız,` myProperty'nin null olmadığını ve doğru bir şekilde tanımlandığını doğrulayın.- Geç Başlatma: Özellikler daha sonra başlatılırsa (örneğin, `` viewdidload '' de), başlatma işleminden sonra bağların uygulandığından emin olun.
4. Dinamik içerik için gecikmiş bağlanma kullanın **
- Dinamik olarak içerik veya denetim oluşturuyorsanız, görünüm tamamen oluşturulduktan sonra bağlamaların uygulanmasını sağlamak için `DeclessBind 'kullanmayı düşünün. Bu özellikle özel kontroller veya dinamik listelerle çalışırken kullanışlıdır.5. Uygun IOC kaydını sağlayın **
- Hizmet Kaydı: Görünüm modelinizde hizmetleri kullanıyorsanız, IOC konteynerine kayıtlı olduklarından emin olun. MVVMCross bu amaç için `` imvxiocprovider 'kullanır.- InitialInelastChance: Platforma özgü IOC kayıtları yapıyorsanız, [4] 'de açıklananlar gibi sorunlardan kaçınmak için `` Base.InitialIZASTCHANS ()' 'adını verdiğinizden emin olun.
6. Özel bağlama sorunları **
- Özel bağlamalar kullanıyorsanız, hedef bağlama sınıflarınızın [5] 'de gösterildiği gibi' FillTargetFactories'i geçersiz kılarak doğru bir şekilde uygulandığını ve `setup.cs '' de kaydedildiğini doğrulayın.7. Hata Ayıklama Teknikleri **
- Kesme Noktaları: Çalışma zamanında görüş modelinizin ve bağlamaların durumunu incelemek için kesme noktalarını kullanın.- Günlükleme: Bağlayıcı işlemler ve potansiyel hatalar hakkında ayrıntılı bilgi almak için MVVMCross Logging'i etkinleştirin.
8. Mvxasynccommand sorunları **
- `mvxasynccommand` kullanıyorsanız, [1] 'de tarif edildiği gibi komutlar oluşturmadan önce` mvx.iocprovider'in başlatıldığından emin olun. Bu birim test senaryoları için çok önemlidir.Bu adımları izleyerek, MVVMCross'taki görünüm bağlamalarıyla ilgili en boş referans istisnalarını tanımlayabilmeniz ve çözebilmeniz gerekir.
Alıntılar:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-test-mxvasynccommand/536185770
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios ve-mvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-binding-with-mvvmcrross
[5] https://www.mvvmcross.com/documentation/adved/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxexception-bindingcontext-is-null-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/adved/mvxnotifytask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding