2010-09-26 18 views
6

Bir koleksiyondaki öğeleri, belirli sayıda sütun ve satır içeren bir ızgarada düzenlemek istiyorum (4x6). Her bir madde bağımlılık özelliklerini (tamsayı) X ve Y ortaya koyar ve kılavuzun ilgili hücresine yerleştirilmelidir. Koleksiyonun, grid öğelerini güncellemesi gereken çalışma zamanı sırasında değişebileceğini unutmayın.Koleksiyon öğelerini bir ızgarada düzenleme

İyi bir çözüm bulamadım. Ama belki de kodu arkadan kullanmadan mümkün mü?

Dönüştürme falan aldırmayın. Bu şeyler zaten değişir. Kullanılan koleksiyon sınıfı önemli değil. (Bir tane seçebilirsiniz.)

Bu sorunu nasıl çözebilirim? Uygun olan her türlü öneriyi memnuniyetle karşılıyoruz.

cevap

6
<ItemsControl ItemsSource="{Binding YourItems}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style> 
      <Setter Property="Grid.Column" Value="{Binding X}"/> 
      <Setter Property="Grid.Row" Value="{Binding Y}"/> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 
+1

İyi bir çözüm, sırasıyla RowDefinition ve ColumnDefinition olarak X ve Y max ile orada Grid.RowDefinitions ve Grid.ColumnDefinitions koymak gerekir rağmen .... aksi takdirde sadece her-üste gelecek. – Goblin

+0

Bunu yapmak için 'ItemContainerStyle' kullanmak zorunda olduğunuzdan bahsetmeye değer. 'ItemTemplate' öğesi tarafından oluşturulan 'ItemTemplate' öğesi tarafından oluşturulan 'ItemsControl' öğesinin oluşturduğu kapsayıcıya ve 'Grid.Row' adlı kümeye sarıldığı için 'Grid.Row' ve 'Grid.Column 'öğesini ayarlayamazsınız. 'Grid' in onları görmesi için 've' Grid.Column', bu kapta ayarlanmalıdır. –

+0

İyi çalışıyor, teşekkürler. @Robert: Açıklama için teşekkürler. Biliyorum bile, Izgaralar kaplar üretiyordu ... –