Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross'ta bir kerelik bağlama kullanmanın herhangi bir sınırlaması var mı?


MVVMCross'ta bir kerelik bağlama kullanmanın herhangi bir sınırlaması var mı?


MVVMCross'ta bir kerelik bağlanma, bağlanma kaynağı ayarlandığında değerleri ViewModel'den görünümden yalnızca bir kez aktaran yararlı bir bağlanma modudur. ViewModel'deki değişiklikleri aktif olarak izlemez, yani ilk bağlanmadan sonra ViewModel'in özellikleri değişirse görünümü güncellemez. Bir kerelik bağlama kullanmak için bazı sınırlamalar ve hususlar:

1. Sürekli güncelleme yok: Bir kerelik bağlamanın birincil sınırlaması, görünümü ViewModel'deki değişikliklere dayanarak sürekli olarak güncellememesidir. Bu, kullanıcı arayüzünde gerçek zamanlı olarak yansıtılması gereken dinamik veriler için daha az uygun hale getirir.

2. Statik Veri: Bir kerelik bağlanma en iyi sık sık değişmeyen statik veya salt okunur veriler için kullanılır. Örneğin, dil seçimi tipik olarak bir kez yapıldığı ve sık sık değiştirilmediğinden, genellikle dil dosyalarından statik metin ayarlamak için kullanılır [1].

3. Recyclerview ve benzer kontroller: `mvxrecyclerview 'gibi kontrollerde, bir kerelik bağlar, geri dönüşüm nedeniyle beklendiği gibi davranmayabilir. Kullanıcı bir listede ilerlediğinde, görünümler geri dönüştürülür ve yeniden kullanılır, bu da bir kerelik bağlamaların yeniden ateşlemesine neden olabilir, etkili bir şekilde sürekli bağlamalar gibi davranır [4]. Bu, düzgün yönetilmezse beklenmedik davranışlara yol açabilir.

4. Performans Hususları: Bir kerelik bağlar değişiklikleri izlemese de, doğal olarak performans sorunları getirmezler. Bununla birlikte, karmaşık düzenlerde veya birçok bağlanma ile yaygın olarak kullanılırsa, ilk kurulum diğer bağlanma modlarına kıyasla daha yavaş kullanıcı arayüzü oluşturma sürelerine katkıda bulunabilir [9].

5. Örneğin, bir işçi iş parçacığında bağlamalar yürütülürse, UI iş parçacığı ile uygun şekilde senkronize edilmedikçe beklenmedik davranışlara yol açabilir [5] [3].

Özetle, bir kerelik bağlama statik veriler için yararlı olsa da, sürekli güncellemelerin gerekli olduğu dinamik veri veya senaryolar için ideal değildir. Ek olarak, `` Recyclerview '' gibi bazı UI bileşenlerindeki davranışı, beklenmedik yenilemeleri önlemek için dikkatli bir işleme gerektirir.

Alıntılar:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/25460030/who-to-use-mvmcross-data-bindings
[3] https://github.com/mvvmcross/mvvmcross/issues/1545
[4] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[5] https://www.mvvmcross.com/mvvmcross-4.2/
[6] https://github.com/mvvmcross/mvvmcross/issues/29
[7] https://stackoverflow.com/questions/17156368/
[8] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[9] https://github.com/mvvmcross/mvvmcross/issues/1342
[10] https://www.mvvmcross.com/mvvmcross-5-reelease/