我正在试图制作一个表示来自文件的数据的树形视图。文件数据具有分为三个不同部分的数据包:标题信息,操作标题和操作数据。 Header Info和Operation Header中的数据包是一层深度的,而Operation Data中的数据包则被分组成列表,所以我认为通过增加一个额外的级别可以更容易地进行组织。这样你可以打开数据,查看列表,并弹出打开的数据包。在WPF中遇到绑定到treeview的问题
这是我的XAML:
<TreeView ItemsSource="{Binding TreeViewItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding TreeNodes}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate>
<TextBlock Text="{Binding DataPackets.ItemName}"/>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
这里是我们正试图绑定到分层的DataTemplates代码:
var childData = new Children();
result.OperationData.ToList().ForEach(x => childData.DataPackets.Add(x));
if (result.HeaderInfo.Any())
{
TreeViewItems.Add(new TreePair() { TreeNodes = result.HeaderInfoProperties.ToList(), Name = "Header Info" });
}
TreeViewItems.Add(new TreePair() { TreeNodes = result.OperationHeaderProperties.ToList(), Name = "Operation Header" });
TreeViewItems.Add(new TreePair() { TreeNodes = result.OperationDataProperties.ToList(), Children = new List<Children> {childData}, Name = "Operation Data" });
和类
public class TreePair
{
public TreePair()
{
TreeNodes = new List<PropertyInfo>();
Children = new List<Children>();
}
public List<Children> Children { get; set; }
public List<PropertyInfo> TreeNodes { get; set; }
public string Name { get; set; }
}
public class Children
{
public Children()
{
DataPackets = new List<DataPacketBase>();
}
public string Name { get; set; }
public List<DataPacketBase> DataPackets { get; set; }
}
我有显示标题信息和操作标题的数据包,以及操作数据的列表名称没有一个子数据包出现。它们存在于Children.DataPackets对象中。
这是扔在输出窗口: BindingExpression路径错误:在“对象”
第二TextBlock的是正确的,但孩子的ItemSource是不是被发现,但名单中没有找到“儿童”属性充满了物品。
儿童Name属性丢失从二级
这几乎有它,它显示所有三个级别,但第二级字符串“名称是失踪”?第一级文本块绑定到名为Name的属性,第二级文本块应该绑定到另一个名为name的属性,第三级应绑定到名为ItemName的文本块。第二级项目在树形视图中,但名称不显示。 – user1307149 2015-02-12 02:23:37
那么哪些项目不显示他们的名字? – nmaait 2015-02-12 02:28:04
我更新了底部显示第二级字符串名称缺失的图像的问题。我应该是儿童的名字财产。 – user1307149 2015-02-12 02:28:47