HierarchicalDataTemplate não está funcionando

Eu estou tentando usar um HierarchicalDataTemplate para recursivamente criar expansores com itens neles, mas quando eu uso o HierarchicalDataTemplate só recebo o primeiro nível de itens exibidos.

Por favor, deixe-me saber se você precisar de alguma informação.

Aqui está o que o xaml seria se eu estivesse escrevendo à mão:

      etc......      

Aqui está o que eu tenho até agora.

Xaml:

               

Classes de dados:

 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; } } } 

Está faltando um bit de chave no seu HierarchicalDataTemplate – como renderizar os subelementos:

        

EDIT: Não para roubar o trovão do @ BDE, mas ele / ela é mais correto sobre o uso de DataType – mas esta é a maneira que você “simplificar” o XAML acima:

                       

Uma alternativa ao HierarchicalDataTemplate é adicionar um ItemsControl ao Expander em seu modelo de dados e vincular o ItemsSource nele.

Além disso, como você especifica o DataType na definição do modelo de dados, não é necessário definir diretamente o ItemTemplate pelo nome da chave do seu ItemsControl .

Se você modificá-lo como XAML, pode fazer o que quiser:

                 

Section.SectionName deve ser MaterialName?

Olhe linhas:

   

e

   

Eu acho que, se firs line binding é SubSections, então segunda linha em vez de

  {Binding Path=SubSections} 

você provavelmente deve escrever

  {Binding} 

SubSectionName eu não encontro nas suas aulas.

Por favor, adicione mais classs