treeview控件使用详解_在WPF中使用TreeView控件显示XML文件

副标题:在WPF中快速显示XML文件

介绍

在本文中,我将描述如何在WPF应用程序中使用TreeView控件显示包含在简单XML文件中的数据,而无需编写任何代码。在本文中,所有的内容都可以在定义窗口内容的XAML文件中找到。虽然,你不会编写这种看似无用的应用程序,但是,了解这些可以让你对业务和应用程序的组合更加的熟悉。

使用代码

实际上,使用WPF显示XML数据相当容易。除了XML文件本身之外,几乎所有实现这一点的工作都是在XAML中完成的,其中大部分工作是通过定义几个资源来完成的。本文提供的源代码是一个完整的工作示例。该项目被配置为使用.NET 4.0,但您可以将MainWindow.xaml和data.xml移动到WPF 3.0项目中,它也应该可以正常工作。

创建WPF应用程序时,将在Visual Studio编辑器中打开的名为MainWindow.xaml的文件中创建一个Window窗口。其中包含了一些简单的XAML代码,用于配置带有Grid控件的默认窗口,以及容纳窗口的其余可视元素。在我们的代码中,我们在Grid标记之前和Window标记下面的空白处添加了一个新的子元素Window.Resouces,以便在窗口中创建一个区域来定义一些资源。首先,参考资料部分如下所示:

 

然后在这些Window.Resources标记之间,我们添加了几个元素,这些元素将被UI用来显示XML数据。我们添加的第一个资源是XmlDataProvider。XmlDataProvider是一个类,它可以将XML数据绑定到元素并使用XML结构。对象是通过创建资源来创建的,如下所示:

Source属性被设置为我们为测试创建的XML文件的名称,但它在运行时实际上并不引用文件。通过将文件放在项目的根目录中,并将其生成操作设置为“Resource”,文件的内容实际上在编译时成为程序集的一部分。因此在本例中,文件名成为资源的Key名称,WPF非常聪明,可以在程序运行时计算出详细信息。XPath属性用于指定节点。XML测试文件有一个名为“root”的根节点,因此我们在这里使用它来开始对该节点的XML解析。

eda641db5af3a6ebe4e72e722586ab07.png
<?xml  version="1.0" encoding="utf-8" ?>                                              市>  省>                                              市>  省>

真正有趣的工作是在使用HierarchicalDataTemplate创建的数据模板中完成的。同样,在Window.Resources元素中,在XmlDataProvider的正下方,我们为XML测试文件中使用的每种类型的标记创建一个数据模板。在本例中,data.xml中存在四个节点项,“root”、“省”、“市”和“区”。所以我们创建了四个数据模板。具体的模板如下所示:

                                                                                                                                                                                                                          

每个模板基本类似。需要注意的主要区别是没有为“区”节点指定ItemsSource属性,因为我知道在“区”节点中没有放置任何项。这样的节点总是在行的末尾,因此没有理由检查它们的内容。ItemsSource属性由HierarchicalDataTemplate专门为此用途提供。HierarchicalDataTemplate使用ItemsSource确定当前项是否包含其他项。否则,将相应地呈现该节点,并且无法进一步向下导航到该节点。但是,如果当前项中包含其他项,则将呈现该项,以便用户可以深入到节点中查看其他项。

最后一件事是将XML数据绑定到UI控件。我通过设置Grid的DataContext和TreeView控件的ItemsSource属性来实现。完整的UI只在几行内定义。

        
a9fd3019768c6a67d773b26fb539478c.png

重点

HierarchicalDataTemplate类使用XML数据填充TreeView变得非常容易。没有理由不能在其他场景中使用它来帮助更复杂的情况。要记住的主要事情是为TreeView所期望的每种类型创建一个模板(或者是父类型来捕获多个降序类型),并在可能包含需要进入TreeView的更多数据的类型上设置ItemsSource。

摘要

在这篇短文中,我们已经了解了如何在WPF中使用TreeView控件来显示简单的XML文件的数据。祝各位好运,编码愉快,摆脱996,回归955!

6623244f5ea8911a9e90ae725c58d27e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值