Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross, bir kerelik bağlama kullanırken güncellemeleri nasıl işler?


MVVMCross, bir kerelik bağlama kullanırken güncellemeleri nasıl işler?


MVVMCross, ViewModel'den veri aktararak, bağlanma kaynağı başlangıçta ayarlandığında bir kerelik bağlama kullanırken güncellemeleri işler. Bu ilk aktarımdan sonra, bağlanma değişim mesajlarını veya olayları ViewModel'den aktif olarak izlemez. Bu nedenle, ViewModel'in özelliğinde daha sonraki değişiklikler, bağlayıcı kaynağın kendisi sıfırlanmadıkça veya yeniden başlatılmadıkça görünüme yansıtılmayacaktır.

MVVMCross'ta Tek Derelik Bağlamanın Anahtar Noktaları:

1. İlk Veri Aktarımı: Bağlama, bağlanma ilk kurulduğunda verileri ViewModel'den görünüme aktarır. Bu genellikle yapılandırılabilen ancak ayarlandıktan sonra sık sık değişmeyen alanlar için kullanışlıdır.

2. Sürekli İzleme Yok: İki yönlü veya tek yönlü bağlamaların aksine, bir kerelik bağlar değişiklikler için viewmodel'i sürekli olarak izlemez. Bu, ViewModel'in özelliği ilk bağlanmadan sonra değişirse, görünümün otomatik olarak güncellenmeyeceği anlamına gelir.

3. Kullanım durumları: Bir kerelik bağlama, verilerin statik olduğu veya dil dosyalarından statik metin ayarlama gibi nadiren değiştiği senaryolarda yaygın olarak kullanılır. Bir dil seçildikten sonra, kullanıcının sık sık değiştirmesi nadirdir, bu da bir kerelik bağlamayı bu tür durumlar için uygun hale getirir [1].

4. Bağlama Kaynağını Sıfırlama: Bağlanma kaynağı sıfırlanırsa veya yeniden başlatılırsa, bir kerelik bağlanma yeni verileri ViewModel'den tekrar görünüme aktarır. Ancak bu, bağlanma kaynağını sıfırlamak için açık bir eylem gerektirir.

5. Dinamik Görünümlerdeki Sınırlamalar: `` MVXRecyclerview '' kullananlar gibi dinamik görünümlerde, görünümler geri dönüştürülürse tek seferlik bağlar beklendiği gibi davranmayabilir. Bu gibi durumlarda, görüşler yeniden kullanıldıkça bağlanma yeniden değerlendirilebilir, bu da beklenmedik davranışlara yol açabilir [6].

Özetle, MVVMCross'un bir kerelik bağlanması, verilerin bir kez ayarlandığı ve dinamik olarak güncellenmesi gerekmediği senaryolar için tasarlanmıştır. Değişiklikler için ViewModel'in sürekli izlenmesini önleyerek bağlanma altyapısını basitleştirir, ancak ilk bağlanmadan sonra ViewModel'in verileri değişirse görünümü güncellemek için manuel müdahale gerektirir.

Alıntılar:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-updates-to-bound-property-in-view-not-propagating-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-pterings-for-asynchronous-mvm-pplications-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup