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?
+5
A:
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/
Matt Hamilton
2008-09-30 11:41:22
Looks like just what I need. Thanks.
Phil Wright
2008-09-30 11:44:42
+6
A:
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>
[UPDATE] I forgot to put in {x:Type ...}! Sorry
Read more about this approach here
rudigrobler
2008-09-30 12:18:29