【发布时间】:2015-06-26 06:18:37
【问题描述】:
我有一个名为ClassWithPupils 的类,它看起来像:
public class ClassWithPupils : ViewModelBase
{
public ClassWithPupils(IClass @class)
{
Class = @class;
Pupils = new ObservableCollection<IPupil>();
}
public IClass Class
{
get { return Get<IClass>(); }
set { Set(value); }
}
public ObservableCollection<IPupil> Pupils
{
get { return Get<ObservableCollection<IPupil>>(); }
set { Set(value); }
}
}
我有一个包含ObservableCollection<ClassWithPupils> 的 ViewModel。
private ObservableCollection<ClassWithPupils> classesWithPupils;
public ObservableCollection<ClassWithPupils> ClassesWithPupils
{
get { return classesWithPupils ?? (classesWithPupils = new ObservableCollection<ClassWithPupils>()); }
}
此集合已正确填充数据库中的项目。
现在我想在 TreeView 中显示 ClassesWithPupils 分层结构中的所有项目。
到目前为止,我的视图如下所示:
<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding}">
<Label Content="{Binding Class.Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
所以类名显示正确。
不幸的是,我不知道如何将每个 ClassWithPupils-Entry 的 Pupils-Collection 作为子项绑定到 TreeView 中的正确项目。
我尝试了类似的方法:
<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding}">
<Label Content="{Binding Class.Name}"/>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Pupils}">
<Label Content="{Binding Name}"/>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
没有成功...
所以我的问题是:如何在 TreeView 中将学生的姓名显示为班级的孩子?
【问题讨论】:
标签: c# wpf treeview hierarchicaldatatemplate