MVVMCross'ta `mvxview` ve` mvxviewController 'kullanırken, birkaç yaygın tuzak ortaya çıkabilir. Bu sorunları anlamak, geliştiricilerin onlardan kaçınmasına yardımcı olabilir ve daha sorunsuz bir gelişme sağlayabilir.
1. Dönüşüm Sorunları Tip **
Yaygın bir sorun tip dönüşümdür. MVVM modelinde, ViewModel'de tanımlanan özellikler doğrudan kullanıcı arayüzü tarafından sarf edilemeyebilir. Örneğin, bir görüntü özelliği bir bayt dizisi olabilir, ancak kullanıcı arayüzü bunu bir görüntü kaynağı olarak bekler. MVVMCross, bu tür dönüşümleri işlemek için `` imvxvalueconverter 'arayüzü sağlar, ancak hantal olabilen döküm gerektirir. Genel `mvxvalueconverter` sınıfı, giriş ve çıkış türlerini açıkça belirtmenize izin vererek yardımcı olur [1].2. Yaşam döngüsü yönetimi **
MVVMCross 5.0 ile başlayarak, viewModels görünümün yaşam döngüsüne bağlanır ve `görünüm ()` `` `` `` `` `` `` `` `` ve `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `ve` `gibi yöntemler ile birleştirilir. Bu yöntemler ViewModel'in durumu üzerinde daha fazla kontrol sunarken,% 100 güvenilir değildir ve platforma özgü olaylardan veya özel uygulama mantığından etkilenebilir [2] [7]. Bu yaşam döngüsü olaylarının uygun şekilde ele alınmasını sağlamak çok önemlidir.3. Bağlanma Sorunları **
Özellikle özel görünümler veya kontroller kullanılırken bağlanma sorunları ortaya çıkabilir. Örneğin, ViewModel'in verileri mevcut olmadan önce özel bir kontrol oluşturulursa, `` DataContext '' ni boş olabilir. `DeclingBind 'kullanmak, veriler mevcut olana kadar bağlanmayı geciktirerek bunu çözmeye yardımcı olabilir [4].4. Viewmodels'in Yeniden Kullanılabilirliği **
MVVMCross'taki ViewModels, özellikle iOS'ta, belirli görünümlerle sıkı bir şekilde bağlanabilir ve yeniden kullanılabilirliklerini azaltabilir. Bu, ViewModels, etiketleri biçimlendirme veya tablo görünümleri için veri kaynakları olarak hareket etme gibi görünüme özgü mantığı kullandığında olur. Bundan kaçınmak için, görünüme özgü dönüşümleri işlemek için viewModels'i iş mantığına odaklayın ve dönüştürücüleri veya diğer mekanizmaları kullanın [3].5. Platforma özgü gezinme **
MVVMCross, platformlar arası navigasyonu destekler, ancak her platform benzersiz sunum modellerine sahiptir. İOS'ta, örneğin, ekran akışı için hikaye tahtaları kullanmak MVVMCross'un platformlar arası yaklaşımıyla çelişebilir. ViewModel'de navigasyon mantığını işlemek ve görünümlerin nasıl görüntülendiğini yönetmek için platforma özgü sunum yapanları kullanmak en iyisidir [5] [9].6. Bağlayıcı Güvenliği **
MVVMCross bağlayıcı kore değildir, yani çerçevenin bölümlerinin derleme sırasında bağlayıcı tarafından çıkarılabileceği anlamına gelir. Bu, çalışma zamanı hatalarına yol açabilir. Bunu önlemek için, çerçevenin gerekli kısımlarını korumak için bağlayıcıyı ima etmeniz gerekir [6].Bu potansiyel tuzakların farkında olarak, geliştiriciler mvvmcross uygulamalarında `mvxview 've` mvxviewController' kullanmanın karmaşıklıklarında daha iyi gezinebilirler.
Alıntılar:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.mvvmcross.com/mvvmcross-5-reelease/
[3] https://www.danielhall.io/the-problems-with-mvvm-on-os
[4] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios ve-mvmcross
[5] https://kerry.lothrop.de/ios-ui-with-mvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/issues/4286
[7] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-best-practices
[9] https://www.mvvmcross.com/documentation/fundamentals/view-presenters