2008-09-30 39 views
13

Liste denetiminde birçok öğe var. Her öğenin, öğenin türüne bağlı olarak farklı bir öğe şablonuna sahip olmasını istiyorum. Yani listedeki ilk öğe bir ObjectA türüdür ve bu yüzden ItemTemplateA ile işlenmesini istiyorum. İkinci öğe bir ObjectB tipi ve bu yüzden render için ItemTemplateB olmasını istiyorum. Şu anda sadece bir şablon tanımlamak için ItemTemplate ayarını kullanabilirim. Bunu başarmanın herhangi bir yolu var mı?WPF Listesindeki her öğe için farklı öğe şablonu?

cevap

14

ItemTemplateSelector çalışacaktır ama birden DataTemplate yaratmak daha kolay olduğunu düşünüyorum Kaynak bölümünüzde ve ardından her birine bir DataType verin. Öğe üreticisi eşleşen veri türünü algılarsa, bu otomatik olarak bu DataTemplate'u kullanır?

<DataTemplate DataType={x:Type local:ObjectA}> 
    ... 
</DataTemplate> 

Ayrıca DataTemplate için herhangi x:Key kümesine sahip olduğundan emin olun.
Bu yaklaşım hakkında daha fazla bilgi edinin here

+0

Bu yaklaşım hiç de işe yaramıyor. –

+4

{x: Type ... öğelerini koymayı unuttum, lütfen tekrar deneyin! – rudigrobler

+1

Ayrıca, x: Anahtar setiniz olmadığından emin olun! – rudigrobler

6

Liste denetiminizin ItemTemplateSelector özelliğine bakın. Özel bir TemplateSelector'a yönlendirebilir ve kodda kullanılacak şablonu belirtebilirsiniz. İşte

bir blog sonrası açıklayan TemplateSelectors:

http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx

Düzenleme: Burada daha iyi bir mesaj var:

http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/

+0

Sadece neye ihtiyacım var gibi görünüyor. Teşekkürler. –

İlgili konular