ListView внутри дочернего TreeViewItem? - PullRequest
0 голосов
/ 30 ноября 2010

Эй, ребята, у меня есть WPF TreeView с тремя узлами, я хотел бы, чтобы последний дочерний элемент (третий узел) содержал ListView, заполненный моими связанными данными.Проблема, с которой я сталкиваюсь, заключается в том, что если я помещаю ListView в ItemTemplate моего HierarchicalDataTemplate, я получаю ListView для каждого дочернего элемента, а не один ListView с содержимым.Это ожидаемое поведение в соответствии с документацией, но я ищу обходной путь (возможно, изменяю ItemContainerStyle), к сожалению, у меня практически нет опыта работы с шаблоном управления TreeViewItem, или в этом отношении большой опыт работы с TreeViews в целом.

Я рассмотрел возможность использования TreeListView, но он не подходит для моего варианта использования и не привязывает отдельный элемент управления и не отображает данные таким образом.

Кто-нибудь уже прошел через головную больсэндвича ListView в TreeViewItem, или кто-то может предложить, как изменить ControlTemplate для достижения этой цели?

Спасибо, Aj

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

Оказывается, что самый простой способ справиться с ситуацией - это заменить HierarchicalDataTemplate на втором узле на Expander, установить ItemsSource в ListView, а не HierarchicalDataTemplate, и изменить стиль кнопки на Expander, чтобы она выглядела как кнопка из TreeViewItem .... Сортировать взломать, но это работает:)

Спасибо за помощь,

Aj

0 голосов
/ 30 ноября 2010

Узел, имеющий Listview, должен иметь тип данных, отличный от двух других узлов, поэтому Treeview может обрабатывать его по-разному.Также кажется, что дочерний элемент, содержащий данные представления списка, должен быть не в HierarchicalDataTemplate, а в обычном DataTemplate, поскольку у него нет других дочерних элементов, распознаваемых древовидным представлением.Вы можете смешивать и сопоставлять HierarchicalDataTemplate и обычные DataTemplates в древовидном представлении по своему усмотрению, обычные DataTemplates представляют «листовые» узлы, у них нет дочерних элементов.

образец с различными типами данных, используемых в Treeviewно все еще используя иерархические шаблоны:

<HierarchicalDataTemplate DataType="{x:Type FooNormal}" ItemsSource="{Binding TreeviewChildNodeCollection}">
   // do something else here.
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type FooList}" ItemsSource="{Binding TreeviewChildNodeCollection}">
  <ListView  ItemsSource="{Binding ListviewChildNodeCollection}">
   //use listview here
  </ListView>
</HierarchicalDataTemplate>
...