HierarchicalDataTemplate不显示没有子项的项目

时间:2014-02-09 19:27:10

标签: c# wpf treeview hierarchicaldatatemplate

在之前的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。

1 个答案:

答案 0 :(得分:1)

您的数据模型不正确。我们在代码中的数据模型通常完全遵循我们的数据库结构,特别是当数据是分层的时候......记住,我们的表是规范化的,而在代码中执行此操作没有任何好处。因此,您的数据库表可能在子表中具有类的外键ID,但在业务模型中,这通常实现为具有子集合的父类。因此,在您的情况下,您的类看起来应该更像这样:

public class SchoolClass
{
    public SchoolClass(List<Pupil> pupils)
    {
        this.Pupils = pupils;
    }

    public List<Pupil> Pupils { get; set; }

    ...
}

无需在代码中定义“弱实体”或“连接表”。以前你的问题是你的父SchoolClassPupil的集合,现在确实如此,所以再试试HierarchicalDataTemplate