我正在試圖製作一個表示來自文件的數據的樹形視圖。文件數據具有分爲三個不同部分的數據包:標題信息,操作標題和操作數據。 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