Разный шаблон элемента для каждого элемента в списке WPF?
-
02-07-2019 - |
Вопрос
У меня есть много элементов внутри элемента управления списком.Я хочу, чтобы у каждого элемента был свой шаблон элемента в зависимости от типа элемента.Итак, первый элемент в списке имеет тип ObjectA, и я хочу, чтобы он отображался с помощью ItemTemplateA.Второй элемент имеет тип ObjectB, поэтому я хочу, чтобы он имел ItemTemplateB для рендеринга.На данный момент я могу использовать только настройку ItemTemplate, чтобы определить один шаблон для всех.Есть ли способ добиться этого?
Решение
тот ItemTemplateSelector
будет работать, но я думаю, что проще создать несколько DataTemplate
в разделе ресурсов, а затем просто дайте каждому DataType
.Это автоматически затем будет использовать это DataTemplate
если генератор элементов обнаруживает соответствующий тип данных?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
Также убедитесь, что у вас нет x:Key
набор для DataTemplate
.
Подробнее об этом подходе здесь
Другие советы
Взгляните на Выбор шаблона элемента свойство вашего элемента управления списком.Вы можете указать его на собственный 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/