Различный шаблон элемента для каждого элемента в списке WPF? - PullRequest
14 голосов
/ 30 сентября 2008

У меня много элементов в элементе управления списком. Я хочу, чтобы у каждого элемента был свой шаблон элемента в зависимости от типа элемента. Таким образом, первый элемент в списке является типом ObjectA, и поэтому я хочу, чтобы он отображался с ItemTemplateA. Второй элемент - это тип ObjectB, поэтому я хочу, чтобы он имел ItemTemplateB для рендеринга. На данный момент я могу использовать только параметр ItemTemplate, чтобы определить один шаблон для них всех. Есть ли способ добиться этого?

Ответы [ 2 ]

15 голосов
/ 30 сентября 2008

ItemTemplateSelector будет работать, но я думаю, что проще создать несколько DataTemplate в разделе ресурсов, а затем просто дать каждому DataType. Затем он будет автоматически использовать этот DataTemplate, если генератор элементов обнаружит соответствующий тип данных?

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

Также убедитесь, что для DataTemplate.
не установлено значение x:Key. Подробнее об этом подходе здесь

6 голосов
/ 30 сентября 2008

Посмотрите на свойство 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/

...