C# TreeView仅加载顶部节点
我尝试使用一个节点类在Silverlight中填充树视图: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
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};
我懒得加载叶节点,这有点把事情搞砸了。切换到一次加载所有节点,一切正常。