2009-10-16 12 views
9

Burada bariz bir şey eksik olabilir, bu yüzden bu gerçekten aptal bir soru ise özür dilerim. ViewModel'de bir GözlemlenebilirKoleksiyona bağlamam gereken bir bakış açısına sahip bir WrapPanel sahibim. Bu GözlemlenebilirKoleksiyon, WrapPanel'de görüntülendiğinde başka bir görüntü türüne bağlı olması gereken farklı türde bir ViewModel içerir. Amaç, her biri WrapPanel'e eklenecek daha küçük bir görünümün bir örneği aracılığıyla görüntülenen, sarılabilir bir öğeler listesi oluşturmaktır.WrapPanel'de UserControl'e GözlemlenebilirKonuklama öğeleri bağlanıyor mu?

MVVM kullanıyorum ve ViewModel'in View'a doğrudan erişimi yok. ViewModel ve View arasında bir bağlantı oluşturmayı tercih etmem mümkün olmuyor. Bu nedenle, öğelerin WrapPanel.Children koleksiyonuna elle eklenmesi uygun bir seçenek değildir. Bir başka ViewPodel nesnesinin koleksiyonunu başka bir görünümün örneklerini oluşturacak ve kendilerine ekleyecek şekilde WrapPanel'e nasıl bağlayabileceğim konusunda bir kayıp yapıyorum. Ben sadece yanlış bir şekilde yaklaşıyor muyum? Ben muhtemelen bir DataTemplate var olduğunu düşünüyorum, ancak bir WrapPanel bir DataTemplate var, ne de bindable görünmüyor.

Herhangi bir fikir için teşekkürler.

+0

Aynı Koleksiyondaki farklı görünüm modellerine sahip olduğunuz bir durumunuz var gibi geliyor. Bu görüntü modellerinin her birinin kendi ilişkili görünümü vardır. Bu VM'leri bir kapsayıcıda görüntülediğinizde, her görünümün ek bir düzey sarılmasını ister misiniz? (Her bir ayrı elemanın etrafındaki bir badem sınırında olduğu gibi) –

+0

Koleksiyon, aynı tipte, bu durumda ServiceMonitorViewModel'i içerir. Sadece onları, Ebeveyn Görünümünde bir sarılabilir kapta göstermem gerek. – jrista

cevap

19

tüm öğeleri barındırması bir WrapPanel kullanan bir ListView olduğunu.

<ListView ItemsSource={...}> 
    <ListView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel IsItemsHost="True" /> 
    </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <!-- Fill in how you want each item to look here --> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

İçgörü Andrew için teşekkürler. Bunu yaptım ve başka bir problemle karşılaştım. Umarım bu konuda da yardımcı olabilirsiniz, yoksa başka bir soruya başlarım. DataTemplate'de , UserControl'ümü attım. Aşağıdaki hatayı alıyorum: 'ServiceMonitorView' türünde bir örnek oluşturulamadı. Kullanıcı denetimi, varsayılan, oluşturulmuş kurucu dışında sıfır kodu vardır ... bu yüzden bir istisna atmadan herhangi bir kurucu kodu olmamalıdır. – jrista

+0

@jrista: Bunun bağımsız bir soruya ait ayrı bir sorun olduğunu söyleyebilirim. (Cevabı bilmiyorum ama ne olacağını merak ediyorum) –

14

kullanın bir ItemsControl ve WrapPanel onun ItemsPanel ayarlayın:

İhtiyacınız ne
<ItemsControl ItemsSource="{Binding Something}" ItemTemplate="{StaticResource YourDataTemplate}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel /> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 
+0

Bu harika ... Silverlight'ta harika işler ... – Anirudha

İlgili konular