2012-04-19 17 views
5

Meta verilere göre sıralanmış çeşitli öğeleri görüntüleyen bir ItemsControl oluşturmaya çalışıyorum. Her öğenin birden fazla meta verisi olabilir. Örneğin, "Konuşma" türünde bir öğe "Bölüm", "Hareket Et" ve "Ses" meta verilerine sahip olabilir.WPF - Grup Stilleri: "Ad" özelliğine yalnızca bağlanabilir miyiz?

Gruplandırmanın WPF'de nasıl çalıştığını ararken GroupStyles ve PropertyGroupDescription sınıfı hakkında bilgi aldım.

PropertyGroupDescription öğesinden miras alan ve "Metadata" türünde bir nesne döndüren kendi sınıfımı oluşturdum.

Benim ItemsControl'üm GroupStyle DataTemplate'imde, döndürülen nesneyi (yani "Metadata" nesnesi) bağlayabilirim ve sonra özelliklerini istediğim gibi görüntüleyebilir miyim? Yoksa "İsim" ye bağlamak zorunda mıyım? Başka bir deyişle

: Varsayılan olarak

<ItemsControl.GroupStyle> 
    <GroupStyle> 
     <GroupStyle.HeaderTemplate> 
      <DataTemplate> 
        Am I forced to bind to "Name" here ? 
      </DataTemplate> 
     </GroupStyle.HeaderTemplate> 
    </GroupStyle> 
</ItemsControl.GroupStyle> 

cevap

13

GroupStyle varsayılan DataContext siz bu CollectionViewGroup Properties bağlanabilir. Ancak, ihtiyacınız varsa, başka herhangi bir BindingSource ayarlayabilirsiniz. Eğer grup kullanımında ilk nesneyi istiyorsanız

:

<TextBlock Text="{Binding Path=Items[0].YourStringProperty}" /> 
+1

Ama Öğeler GroupDescription nesnenin öğelerin dizi ve değildir. Yani 'Meta veri' özelliği erişilemez mi? – Dani

0

, onun ToString() yöntemini kullanarak ekranı çalışacağız özel nesnesine bağlama yapıyor, Adı değildir (iyi, ToString() adını tarafından yazdırıyor yine de varsayılan). Başka bir şey yazdırmak için ToString() yöntemini geçersiz kılmayı deneyebilirsiniz, ne demek istediğimi görürsünüz.

Tabii ki kendi DataTemplate'inizi tanımlayabilir ve farklı özelliklere bağlayabilirsiniz.

<DataTemplate> 
<TextBlock Text="{Binding XXXXX}"/> 
</DataTemplate> 
İlgili konular