2009-06-08 14 views
11

Ben DataTemplatesiçin ObservableCollections ViewModel üzerinde yoluyla bağlanarak ItemsControl kullanırken temel MVVM tasarım yaklaşımı anlamaya çalışıyorum.ViewModel'imin Gözlemlenebilir Bir Görünüm veya GörünümModelleri Var mı?

Ben dizeleri, Görünümler ve ViewModels ait ObservableCollections bağlanan örnek gördüm. dizeleri bağlanma

demolar için sadece görünüyor, WPF gücü gerçekten çıkıp görünüyor "ViewModels koleksiyonları içeren Görünümler koleksiyonları içeren ViewModels" için bağlayıcıdır.

MVVM deseninde yetkin kullanım olanlar için, bir ViewModel'deki koleksiyonlara ItemsControl, ListView, ListBox'ın bağlanmasıyla ilgili standart yaklaşımınız nedir? böyle deneyimden tavsiye için arıyorum:

  • hep ObservableCollection < kullanmak ...> ve bir koleksiyon ItemsControl gösterilecek daha < ...>
  • ... çünkü bir şey daha iyidir listeleyin asla ... sırayla
  • ... senin ViewModel yerine kod arkasında, kullanımda çalışmaya
  • kullanım Görünümler zaman koleksiyonları ... ve ne zaman ViewModels koleksiyonları ...
  • % 90 filtreleme olsun zamanın bir ItemsControl oluşturup O'ya bağladım Kendi ViewModelleri olan Görünümlerin bservableKollection ...

cevap

10

aşağıdaki nedenlerle ViewModels bir ObservableCollection kullanmak:

  • ObservableCollection zaten modifiye edildiğinde sinyal için uygun olaylar vardır (madde eklendiğinde, örneğin/toplama kaldırılır).
  • ViewModel 'katmanındayız, bu nedenle ViewModel'in ViewModel koleksiyonu yerine GörünümModel koleksiyonu içermesini sağlamak için daha temiz ayırma sağlar.
  • Koleksiyondaki öğelerden verileri değiştirmek veya almak gerekirse daha kolay yapabilirsiniz öğeler ViewModels ise, bu verileri değiştirebilir/bunlara erişebilirsiniz (eğer görüntüleniyorsa, genellikle View'ın DataContext dosyasını veya UI öğelerine erişirsiniz).
+0

faydalı, teşekkürler –

+0

+1, bu kesinlikle gitmek için bir yoldur. viewmodel'inizde görünüm modları koleksiyonları vardır ve görünümünüzün kaynak koleksiyonunda bu görünüm modellerinin her biri için veri alanları vardır. –

1

ViewModels'in GözlemlenebilirKoleksiyonunu kullanmayı seviyorum. Koleksiyona bağlanan görünüm, ViewModel'in görünümünü veren bir DataTemplate'i tanımlayabilir. Bu, bileşenler arasında daha az bağlantıya yol açar.

+0

ViewModels Gözlemi (Görünümler yerine) varsa, DataTemplate'ınızda bu XAML'a sahip olma ve bu XAML'nin bir .xaml dosyasının Görünümüne sahip olması arasındaki fark nedir? –

1

Aynı soruya sahibim, ancak "görünümü" ile "modeli" değiştir. :)

Diğer modellerden oluşan bir koleksiyona sahip bir MODEL sahibim. Viewmodel'in, başka bir görünüm modelinin gözlenebilir bir koleksiyonuna sahip olmasını istiyorum, ancak bunu bir kez başlattığımda, model koleksiyonu içeriği arasındaki bağlantı kayboluyor. Şimdi, tüm olayları, görüntü modülleriyle ilgili gözlemlenebilir koleksiyonlardan model koleksiyonuna geri bağlamaya başlamalı mıyım?

+1

Evet, etkinlik bunu yapmanın en iyi yoludur. Güvenlik için zayıf olay desenini kullanmayı düşünün. – Gusdor

İlgili konular