2017-01-23 2 views
1

Ich möchte den hierarchischen Baum erstellen. Ich folgte jeden Schritt von here, aber aus irgendeinem Grund zeigt es mir nur eine Ebene tief. Hier ist, was ich bekomme: enter image description here Was könnte der Grund sein?Warum zeigt meine Baumansicht nur eine Ebene tief?

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> 

Ansichtsmodell

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

Versuchen Sie, den Teil 'HierarchicalDataTemplate.ItemTemplate' zu ​​löschen und führen Sie ein Beispiel ohne es aus. – Shakra

+0

Was für ein dummer Fehler. Vielen Dank. – theateist

Antwort

0

Sie definieren Ihre Vorlage als genau zwei Ebenen tief, so dass Sie ein Zwei-Ebenen-Baumansicht erhalten gehen. Dies liegt daran, dass Sie explizit angeben, dass die ItemTemplateHeirarchicalDataTemplate eine DataTemplate ohne Kinder sein soll.

Ich bin nicht sicher, was Ihre beabsichtigte Vorlage sein soll, aber wenn Sie diese innere Vorlage entfernen, sollten Sie alle Elemente zur Anzeige bekommen. Alternativ können Sie die innere Vorlage auch als HeirarchicalDataTemplate definieren.

Verwandte Themen