2010-12-02 18 views
0

ich eine Knotenklasse haben Ich versuche, eine TreeView in Silverlight zu füllen zu verwenden:TreeView lädt nur Top-Knoten

class TreeNode { 
    public string Caption {get; set;}; 
    public IEnumerable<TreeNode> Children{get; set;} 

} 

Meine XAML ist wie folgt:

<controls:TreeView VerticalAlignment="Stretch" 
          x:Name="trv" 
          Height="150" > 
      <controls:TreeView.ItemTemplate> 
       <common:HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" > 
        <TextBlock Text="{Binding Path=Caption}" /> 
       </common:HierarchicalDataTemplate> 
      </controls:TreeView.ItemTemplate> 
     </controls:TreeView> 

jedoch nur die erste Stufe der Elemente laden. Wenn ich TextBlock durch HearicalDataTemplate ersetze und meine Datentiefe im Grunde fest codiere, wird die zweite Ebene der Elemente angezeigt. Aber dann ist die 3. Stufe nicht.

Irgendwelche Ideen?

Antwort

1

Ich habe das gerade ausprobiert, Sie müssen etwas falsch auf dem Datenbindungs-Teil tun, da alles wie erwartet funktioniert. Ich habe unten ein einfaches Beispiel mit Ihrem XAML erstellt.

Ausgang:

alt text

XAML:

<controls:TreeView VerticalAlignment="Stretch" 
        x:Name="trv" 
        Height="150" > 
    <controls:TreeView.ItemTemplate> 
     <controls:HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" > 
      <TextBlock Text="{Binding Path=Caption}" /> 
     </controls:HierarchicalDataTemplate> 
    </controls:TreeView.ItemTemplate> 
</controls:TreeView> 

Code:

TreeNode myNode = new TreeNode() { Caption = "Parent" }; 
    List<TreeNode> myChildren = new List<TreeNode>(); 

    myChildren.Add(new TreeNode() { Caption = "First Child" }); 
    myChildren.Add(new TreeNode() { Caption = "Second Child", Children = new List<TreeNode>() { new TreeNode() { Caption = "Child on 3rd Level" } } }); 


    myNode.Children = myChildren; 
    trv.ItemsSource = new List<TreeNode>() { myNode }; 
+0

Ich war faul das Laden der Blattknoten, und das hat die Dinge ein wenig durcheinander gebracht. Zum Laden aller Knoten auf einmal geschaltet, und die Dinge funktionieren gut. –