Different item template for each item in a WPF List?
Asked Answered
K

2

13

I have many items inside a list control. I want each item to have a different item template depending on the type of the item. So the first item in the list is a ObjectA type and so I want it to be rendered with ItemTemplateA. Second item is a ObjectB type and so I want it to have ItemTemplateB for rendering. At the moment I can only use the ItemTemplate setting to define one template for them all. Any way to achieve this?

Korry answered 30/9, 2008 at 11:37 Comment(0)
B
15

the ItemTemplateSelector will work but I think it is easier to create multiple DataTemplates in your resource section and then just giving each one a DataType. This will automatically then use this DataTemplate if the items generator detects the matching data type?

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

Also make sure that you have no x:Key set for the DataTemplate.
Read more about this approach here

Bombastic answered 30/9, 2008 at 12:18 Comment(4)
I forgot to put in the {x:Type... stuff, please try again!Bombastic
Also make sure that you have no x:Key set!Bombastic
it seems the link is dead.. Do you have any similar source to refer to?Automata
The quotes around {x:Type local:Object} are missing. And here is a link to a similar solution with ItemsControl and DataType binding in WPF.Dollfuss
G
6

Have a look at the ItemTemplateSelector property of your list control. You can point it to a custom TemplateSelector and decide which template to use in code.

Here's a blog post describing TemplateSelectors:

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

Edit: Here's a better post:

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

Gibson answered 30/9, 2008 at 11:41 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.