【问题标题】:HierarchicalDataTemplate doesn't display items without childrenHierarchicalDataTemplate 不显示没有子项的项目
【发布时间】:2014-02-09 19:27:10
【问题描述】:

在以前的question 中我想知道,如何为TreeView 设置HierarchicalDataTemplate。这很好用。我现在的问题是:

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 中,我有一个 ObservableCollection&lt;ClassPupils&gt; TreeView 绑定到的位置。

如果ClassPupil 在 Pupils-Collection 中没有 Pupils,则不会显示该项目。我不明白为什么?我还需要在 Pupils-Collection 中显示没有 Pupils 的 ClassPupils。

【问题讨论】:

  • 发布您的数据模板和树 xaml。

标签: c# wpf treeview hierarchicaldatatemplate


【解决方案1】:

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

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

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

    ...
}

无需在代码中定义“弱实体”或“连接表”。而您之前的问题是您的父级 SchoolClass 没有没有Pupils 的集合,现在有,所以请再次尝试您的 HierarchicalDataTemplate

【讨论】:

  • 这意味着学生班不知道它是班级。但是这个班有一群学生吗?
  • 不,这意味着在代码中,没有 PupilClass... 这样的东西在您的数据库模型中。
猜你喜欢
  • 1970-01-01
  • 2019-08-14
  • 2020-09-05
  • 2017-01-09
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多