Разный шаблон элемента для каждого элемента в списке WPF?
У меня есть много элементов внутри элемента управления списком. Я хочу, чтобы у каждого элемента был другой шаблон элемента в зависимости от типа элемента. Таким образом, первый элемент в списке - это тип ObjectA, поэтому я хочу, чтобы он отображался с помощью ItemTemplateA. Второй элемент - тип ObjectB, поэтому я хочу, чтобы у него был ItemTemplateB для рендеринга. На данный момент я могу использовать параметр ItemTemplate, чтобы определить для них один шаблон. Любой способ добиться этого?
Ответы
Ответ 1
ItemTemplateSelector
будет работать, но я думаю, что проще создать несколько DataTemplate
в разделе ресурсов, а затем просто указать каждому из них DataType
. Это автоматически будет использовать этот DataTemplate
, если генератор элементов обнаружит соответствующий тип данных?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
Также убедитесь, что для DataTemplate
установлено значение x:Key
.
Подробнее об этом подходе здесь
Ответ 2
Посмотрите на свойство ItemTemplateSelector вашего элемента управления списком. Вы можете указать его на пользовательский TemplateSelector и решить, какой шаблон использовать в коде.
Здесь сообщение в блоге, описывающее TemplateSelectors:
http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx
Изменить: Здесь лучший пост:
http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/