2010-12-02 3 views
0

У меня есть класс узла, который я пытаюсь использовать для заполнения TreeView в Silverlight:TreeView загружает только верхние узлы

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

} 

Мой XAML выглядит следующим образом:

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

Однако только первый уровень нагрузки элементов. Если я заменю TextBlock на HerarchicalDataTemplate, в основном жестко кодируя глубину данных, отобразится 2-й уровень элементов. Однако тогда 3-го уровня нет.

Любые идеи?

ответ

1

Я только что попробовал это, вы должны что-то делать с частью привязки данных, так как все работает так, как ожидалось. Я создал простой пример с вашим XAML ниже.

Выход:

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> 

Код:

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

я был ленивым загружая листовые узлы, и это немного путало. Переключается на загрузку всех узлов сразу, и все работает нормально. – 2010-12-03 14:25:34

Смежные вопросы