HierarchicalDataTemplate不起作用

我试图使用HierarchicalDataTemplate递归创建包含项目的扩展器,但是当我使用HierarchicalDataTemplate时,我只获得显示的第一级项目。

如果您需要任何信息,请告诉我。

如果我是手写的话,那就是xaml的样子:

      etc......      

这是我到目前为止所拥有的。

XAML:

               

数据类:

 class TopViewModel { ObservableCollection _sections = new ObservableCollection(); public ObservableCollection Sections { get { return _sections; } set { _sections = value; } } } public class SectionViewModel { ObservableCollection _materials = new ObservableCollection(); ObservableCollection _subSections = new ObservableCollection(); Section _section; public Section Section { get { return _section; } set { _section = value; } } public string MaterialName { get { return Section.SectionName; } set { Section.SectionName = value; } } public ObservableCollection Materials { get { return _materials; } set { _materials = value; } } public ObservableCollection SubSections { get { return _subSections; } set { _subSections = value; } } } public class SubSectionViewModel { ObservableCollection _materials = new ObservableCollection(); ObservableCollection _subSections = new ObservableCollection(); SubSection _subSection; public ObservableCollection Materials { get { return _materials; } set { _materials = value; } } public ObservableCollection SubSections { get { return _subSections; } set { _subSections = value; } } public SubSection SubSection { get { return _subSection; } set { _subSection = value; } } } 

您缺少HierarchicalDataTemplate的关键位 – 如何呈现子元素:

        

编辑:不要窃取@ BDE的风头,但他/她对DataType的使用大多是正确的 – 但这就是你“简化”上述XAML的方式:

                       

HierarchicalDataTemplate的替代方法是将ItemsControl添加到数据模板中的Expander ,并将ItemsSource绑定到那里。

此外,由于您在数据模板定义中指定了DataType ,因此您不必直接为顶级ItemsControl键名设置ItemTemplate

如果你像这样修改XAML它可能会做你想要的:

                 

Section.SectionName应该是MaterialName?

看线:

   

   

我认为,如果第一行绑定是SubSections,那么第二行代替

  {Binding Path=SubSections} 

你可能会写

  {Binding} 

我没有在你的课程中找到SubSectionName。

请添加更多课程