Я хотел бы, чтобы отобразить следующую структуру в WPF Treeview:Связывание WPF TreeView с несколькими списками
public class Group{
public string Groupname;
public IEnumerable<Group> Groups;
public Ienumerable<User> Member;
}
Мои ViewModel выглядит следующим образом:
public class ViewModel{
public Group RootGroup;
}
Я думаю, XAML код должен выглядеть следующим образом:
<TreeView>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource={Binding ViewModel.RootGroup}>
<TextBlock Text={Binding Groupname}/>
<HierarchicalDataTemplate ItemsSource={Binding Member}>
<TextBlock Text={Binding Displayname}/>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
то, что я хочу, чтобы это выглядело как:
RootGroup-Name
-Member1
-Member2
-Member3
-Member4
-SubGroup1
-Member1
-Sub-SubGroup1
-Member1
-SubGroup2
-Sub-SubGroup2
-Sub-Sub-SubGroup1
-Member1
Я привязал DataContext к себе, поэтому это не должно быть причиной того, что мой TreeView ничего не покажет.
Не является ли область «Имя» внутри «Узлов» свойств, потому что ItemSource был установлен до того, как вы получили доступ к «Имя»? Итак, как бы я смог отобразить имя RootGroup? Прошу прощения. Чтобы уточнить, группа может содержать группы и группы одновременно. – C4p741nZ
'Nodes' - это коллекция' GItemViewModel', поэтому каждый узел содержит 'Name'. Я думаю, что сложно объединить участников и группы в одном узле. Я обновил ответ для поведения корневого узла. Также удален закрытый набор для 'Nodes'. – bars222
Отредактированная ошибка, привязка должна выглядеть так: treeView.ItemsSource = vm.Nodes; ' – bars222