2010-12-02 12 views
0

j'ai une classe de nœud que je suis en train d'utiliser pour remplir un TreeView dans Silverlight:TreeView charge uniquement les noeuds supérieurs

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

} 

Mon XAML est la suivante:

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

Cependant, seule la premier niveau d'éléments de charge. Si je remplace TextBlock par HerarchicalDataTemplate, codant essentiellement ma profondeur de données, le deuxième niveau d'éléments est affiché. Cependant, le troisième niveau ne le sont pas.

Des idées?

Répondre

1

Je viens d'essayer, vous devez faire quelque chose de mal sur la partie de liaison de données, puisque tout fonctionne comme prévu. J'ai créé un exemple simple avec votre XAML ci-dessous.

Sortie:

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

J'étais paresseux charger les noeuds de la feuille, et c'était déconner un peu les choses. Commuté à charger tous les nœuds à la fois, et les choses fonctionnent bien. –