绑定任意格式的XML文档到WPF的TreeView
2010-02-18 04:39
399 查看
在WPF中,如果我们已经知道某XML的格式,将其数据通过数据绑定在TreeView中呈现出来是非常简单的。通过Xpath和HierarchicalDataTemplate很容易实现。
但是,有时我们还需要将一个未知格式的xml文件绑定到TreeView。其实IE及那些XML工具都有这种功能:任意打开一个xml文件,都能以树型的格式的显示。
这种就是一种通用型的XML格式绑定了,由于XML格式未知,无法根据XPATH来生成模板,往往有点无从下手的感觉。这里给出了一个简单的示例:
代码
<HierarchicalDataTemplate x:Key="NodeTemplate">
<TextBlock x:Name="text" Text="?" />
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Value}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Name}"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
<XmlDataProvider x:Key="xmlDataProvider">
<x:XData>
<Root xmlns="">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
</Root>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid >
<TreeView Name="treeView1"
Background="AliceBlue"
ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=*}"
ItemTemplate= "{StaticResource NodeTemplate}"/>
</Grid>
这个例子比较简单,基本上看着就知道是怎么回事了。当然,其也只实现了最基本的信息的显示,在这里只是抛砖引玉,要实现更详细的信息显示还得进一步完善。
但是,有时我们还需要将一个未知格式的xml文件绑定到TreeView。其实IE及那些XML工具都有这种功能:任意打开一个xml文件,都能以树型的格式的显示。
这种就是一种通用型的XML格式绑定了,由于XML格式未知,无法根据XPATH来生成模板,往往有点无从下手的感觉。这里给出了一个简单的示例:
代码
<HierarchicalDataTemplate x:Key="NodeTemplate">
<TextBlock x:Name="text" Text="?" />
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Value}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Name}"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
<XmlDataProvider x:Key="xmlDataProvider">
<x:XData>
<Root xmlns="">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
</Root>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid >
<TreeView Name="treeView1"
Background="AliceBlue"
ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=*}"
ItemTemplate= "{StaticResource NodeTemplate}"/>
</Grid>
这个例子比较简单,基本上看着就知道是怎么回事了。当然,其也只实现了最基本的信息的显示,在这里只是抛砖引玉,要实现更详细的信息显示还得进一步完善。
相关文章推荐
- 绑定任意格式的XML文档到WPF的TreeView
- TreeView绑定XML文档
- net9:磁盘目录文件保存到XML文档及其XML文档的读写操作,以及绑定XML到treeview
- winform实现 绑定xml文档到treeview 控件
- WPF 数据绑定TreeView+DataGrid+XML
- 创建可编辑的xml文档(之一)绑定xml文档到treeview 控件
- WPF_拖拽任意XML结构生成TreeView
- winform实现 绑定xml文档到treeview 控件
- treeView绑定XML文档
- 格式良好的XML文档 (well formed XML)
- 掌握XML系列(四)---创建格式良好的XML文档
- treeview控件(动态数据绑定+整行选择)(WPF)(一)
- 为什么XML文档的格式是否规范如此重要呢?为何W3C规定XML处理器不应尝试修复不规范的文档
- 掌握XML系列(四)---创建格式良好的XML文档
- 基于XML的Word文档格式智能识别
- Java Web项目中利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等
- Xerces-C++更新XML文档的空行格式问题
- WPF的TreeView绑定数据库后的点击问题
- C编写以二进制读取文件(任意格式eg :图片),保存到C语言数据格式的TXT文档
- WPF新手之如何将数据绑定到TreeView