我在代码后面生成了 XDocument ,如下所示:
<Root>
<Pubs>
<Book id='A123'>
<Author state='AS'>Moreno</Author>
</Book>
<Book id='B456'>
<Author state='BS'>Gazit</Author>
</Book>
</Pubs>
</Root>
并希望将其绑定到 WPF 应用程序中的 Treeview 控件,使其具有以下内容:
+ Pubs //Pubs Element Name
+ A123 //Book Element Attribute Value
+ Moreno //Author Element Inner text
+ B456
+ Gazit
那么,什么是最好的解决方案?
答案 0 :(得分:4)
您应该将每个元素反序列化为适当的对象,然后从可观察的集合中构建树层次结构。
您应该阅读使用MVVM的WPF TreeView。本教程非常好 -
http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx
答案 1 :(得分:2)
在您的(控件或窗口或应用程序)资源中定义具有Book作为DataType的DataTemplate,并将TreeView绑定到Book列表可能会起作用。
答案 2 :(得分:2)
这就是答案:
对于每个TreeView级别,我们必须在HierarchicalDataTemplate
中定义一个特定的TreeView.Resources
:
DataType
=元素名称ItemsSource
=绑定子名称例如如下:
<TreeView Name="treeView2" ItemsSource="{Binding Path=Root.Elements}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="Book" ItemsSource="{Binding Path=Elements}" x:Key="template1">
<TextBlock Text="{Binding Path='Attribute[id].Value'}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Pubs" ItemsSource="{Binding Path=Elements}" x:Key="template2">
<TextBlock Text="{Binding Path='Name'}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Author" x:Key="template3">
<TextBlock Text="{Binding Path='Attribute[state].Value'}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
一切都好!