Companys.xml文件
<?xml version="1.0" encoding="utf-8" ?>
<root>
<Company Name="公司1">
<Dempartment Name="部门1">
<Employee Name="员工1"/>
<Employee Name="员工2"/>
</Dempartment>
<Dempartment Name="部门2">
<Employee Name="员工1"/>
<Employee Name="员工2"/>
</Dempartment>
</Company>
<Company Name="公司2">
<Dempartment Name="部门1">
<Employee Name="员工1"/>
<Employee Name="员工2"/>
</Dempartment>
<Dempartment Name="部门2">
<Employee Name="员工1"/>
<Employee Name="员工2"/>
</Dempartment>
</Company>
</root>
前台代码:
<Window x:Class="优快云WpfApp.TreeViewWindow2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:优快云WpfApp"
mc:Ignorable="d"
Title="TreeViewWindow2" Height="450" Width="800">
<Window.Resources>
<XmlDataProvider x:Key="xdp" Source="Companys.xml" XPath="root/Company"/>
<HierarchicalDataTemplate DataType="Company" ItemsSource="{Binding XPath=Dempartment}">
<TextBlock Text="{Binding XPath=@Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Dempartment" ItemsSource="{Binding XPath=Employee}">
<TextBlock Text="{Binding XPath=@Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Employee">
<TextBlock Text="{Binding XPath=@Name}"/>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView x:Name="treeView" ItemsSource="{Binding Source={StaticResource xdp}}" HorizontalAlignment="Left" Height="350" Margin="30,30,0,0" VerticalAlignment="Top" Width="440"/>
</Grid>
</Window>
分析说明:
使用XmlDataProvider作为数据源
DataType 可以把xml数据中的元素作为当前数据类型,这样元素的子节点和Attribute可以使用XPath来访问
ItemsSource 通过XPath指定下一级需要显示的元素
显示内容指定了一个TextBlock 通过XPath绑定当前数据类型需要显示的属性
后台代码
using System.Windows;
namespace 优快云WpfApp
{
/// <summary>
/// TreeViewWindow2.xaml 的交互逻辑
/// </summary>
public partial class TreeViewWindow2 : Window
{
public TreeViewWindow2()
{
InitializeComponent();
}
}
}