2017-01-23 45 views
1

我想创建分层树。我跟着从here的每一步,但由于某种原因,它显示我只有一个深度。 这是我得到的:enter image description here 可能是什么原因?为什么我的treeview只显示一个级别?

XAML

<TreeView SelectedItemChanged="TreeView_SelectedItemChanged" ItemsSource="{Binding Items}"> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:MyClass}"> 
      <TextBlock Foreground="Red" Text="{Binding Name}" /> 
      <HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}" MouseLeftButtonUp="TreeViewItem_MouseLeftButtonUp"/> 
       </DataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

视图模型

public class MyClass 
{ 
    public string Name { get; set; } 
    public List<MyClass> Children { get; set; } 
} 

public class MyViewModel 
{ 
    private List<MyClass> _items; 
    public List<MyClass> Items 
    { 
     get 
     { 
      return _items; 
     } 
    } 

    public MyViewModel() 
    { 
     _items = new List<MyClass>(); 
     _items.Add(new MyClass 
     { 
      Name = "1", 
      Children = new List<MyClass> 
      { 
       new MyClass 
       { 
        Name = "1_1", 
        Children = new List<MyClass> 
        { 
         new MyClass 
         { 
          Name = "1_1_1" 
         }, 
         new MyClass 
         { 
          Name = "1_1_2" 
         } 
        } 
       }, 
       new MyClass 
       { 
        Name = "1_2" 
       } 
      } 
     }); 
    } 
} 
+2

尝试删除零件'HierarchicalDataTemplate.ItemTemplate'并运行没有它的例子。 – Shakra

+0

多么愚蠢的错误。谢谢。 – theateist

回答

0

您要定义模板,正好有两个层次深,所以你会得到一个二级树视图。这是因为您明确指出HeirarchicalDataTemplateItemTemplate应该是DataTemplate而没有孩子。

我不确定你想要的模板应该是什么,但如果你删除了内部模板,你应该得到所有的项目显示。或者,您可以使内部模板也是HeirarchicalDataTemplate

相关问题