Привязать пользовательский объект к TreeView в WPF

1

У меня есть объект класса, определенного ниже

class XYZ
{
    List<XYZ> child;
    String header;
}

Я хочу привязать этот объект к древовидной структуре. Первоначально корень XYZ будет самым верхним TreeViewItem. root будет иметь дочерний элемент List как sub TreeViewItems. Это будет продолжаться рекурсивно, пока список каждого объекта XYZ не будет пустым. Каждый TreeViewItem является либо узлом, либо листом (если дочерний элемент List пуст).

Я могу сделать это программно, добавив TreeViewItem в качестве дочернего элемента в родительский TreeViewItem.

Количество уровней неизвестно.

Я ссылался на этот ответ Bind Object на WPF TreeView, но здесь он упоминается для трехуровневой иерархии.

Теги:
wpf
treeview

1 ответ

3
Лучший ответ

Вам просто нужно определить иерархический Datatemplate для вашей модели viewmodel, и это должно заботиться о нескольких уровнях в вашем древовидной структуре.

Убедитесь, что используемая вами коллекция реализует INotificationPropertyChanged

План данных будет в строках

<TreeView ItemsSource={Binding child}>
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding child}" DataType="{x:Type vm:XYZ}">
<Grid>
<TextBlock Text="{Binding header}"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
  • 0
    Почему даунвот ??? ОП спросил, как построить динамическое древовидное представление, и я предоставил для этого таблицу данных. Конечно, он не предоставил никакого кода, я должен был угадать его реализацию и предоставить руководство по крайней мере для решения!
  • 0
    Извините за отсутствие кода, но ваше решение сработало!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню