在之前的question我想知道,如何为HierarchicalDataTemplate
设置TreeView
。这只是工作正常。我现在的问题如下:
班级ClassPupils
如下:
public class ClassPupils
{
public ClassPupils(Class @class)
{
this.Class = @class;
this.Pupils = new List<Pupil>();
}
public Class Class { get; set; }
public List<Pupil> Pupils { get; set; }
}
在我的ViewModel中,我有一个绑定了TreeView的ObservableCollection<ClassPupils>
。
如果ClassPupil
在Pupils-Collection中没有学生,则不会显示该项目。我不明白为什么?我还需要在Pupils-Collection中显示没有学生的ClassPupils。
答案 0 :(得分:1)
您的数据模型不正确。我们在代码中的数据模型通常不完全遵循我们的数据库结构,特别是当数据是分层的时候......记住,我们的表是规范化的,而在代码中执行此操作没有任何好处。因此,您的数据库表可能在子表中具有类的外键ID,但在业务模型中,这通常实现为具有子集合的父类。因此,在您的情况下,您的父类看起来应该更像这样:
public class SchoolClass
{
public SchoolClass(List<Pupil> pupils)
{
this.Pupils = pupils;
}
public List<Pupil> Pupils { get; set; }
...
}
无需在代码中定义“弱实体”或“连接表”。以前你的问题是你的父SchoolClass
课不有Pupil
的集合,现在确实如此,所以再试试HierarchicalDataTemplate
。