C# TreeView仅加载顶部节点

C# TreeView仅加载顶部节点,c#,silverlight,silverlight-4.0,C#,Silverlight,Silverlight 4.0,我尝试使用一个节点类在Silverlight中填充树视图: class TreeNode { public string Caption {get; set;}; public IEnumerable<TreeNode> Children{get; set;} } 类树节点{ 公共字符串标题{get;set;}; 公共IEnumerable子项{get;set;} } 我的XAML如下所示: <controls:TreeView VerticalAlign

我尝试使用一个节点类在Silverlight中填充树视图:

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

}
类树节点{
公共字符串标题{get;set;};
公共IEnumerable子项{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>

但是,仅加载第一层元素。如果我用HerarchicalDataTemplate替换TextBlock,基本上是硬编码数据深度,则会显示第二层元素。然而,第三层不是


有什么想法吗?

我刚刚试过,你一定是在数据绑定部分做错了什么,因为一切都正常工作。我用下面的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 };

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

代码:

<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 };
treenodemynode=newtreenode(){Caption=“Parent”};
List myChildren=新列表();
添加(new TreeNode(){Caption=“First Child”});
添加(new TreeNode(){Caption=“Second Child”,Children=new List(){new TreeNode(){Caption=“Child on 3rd Level”}});
myNode.Children=myChildren;
trv.ItemsSource=新列表(){myNode};

我懒得加载叶节点,这有点把事情搞砸了。切换到一次加载所有节点,一切正常。