WPF 中的 TreeView 控件用于显示层次结构数据。它是由可展开和可折叠的 TreeViewItem 节点组成的,这些节点可以无限嵌套以表示数据的层次。
TreeView 基本用法
例如实现下图的效果:
xaml代码如下:
xml
<Window x:Class="TreeView01.MainWindow"
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:TreeView01"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TreeView>
<TreeViewItem Header="顶级项1">
<TreeViewItem Header="子项1.1"/>
<TreeViewItem Header="子项1.2"/>
</TreeViewItem>
<TreeViewItem Header="顶级项2">
<TreeViewItem Header="子项2.1">
<TreeViewItem Header="子项2.1.1"/>
</TreeViewItem>
<TreeViewItem Header="子项2.2"/>
</TreeViewItem>
</TreeView>
</Grid>
</Window>
TreeView参数介绍
WPF 中的 TreeView
控件用于显示层次结构数据。它是由可展开和可折叠的 TreeViewItem
节点组成的,这些节点可以无限嵌套以表示数据的层次。
以下是一些与 TreeView
和 TreeViewItem
相关的关键概念和属性:
TreeView 的关键属性:
ItemsSource
:绑定到一个数据源,数据源中的每个项将被表示为一个TreeViewItem
。ItemTemplate
:定义如何显示每个TreeViewItem
的数据模板。SelectedItem
:获取或设置当前选中的TreeViewItem
。SelectedValue
:当你使用SelectedValuePath
设置了属性路径时,SelectedValue
可以提供当前选中的TreeViewItem
的特定属性值。SelectedValuePath
:定义SelectedValue
应该绑定的属性路径。
TreeViewItem 的关键属性:
Items
:获取TreeViewItem
中包含的子项的集合。IsExpanded
:获取或设置一个值,该值表示TreeViewItem
是否展开显示其子项。IsSelected
:获取或设置一个值,该值表示TreeViewItem
是否被选中。Header
:获取或设置TreeViewItem
的头部内容,通常是显示的文本。
TreeView 的事件:
SelectedItemChanged
:当选择的项目发生变化时触发的事件。Collapsed
:当TreeViewItem
折叠时触发的事件。Expanded
:当TreeViewItem
展开时触发的事件。
使用 TreeView
在 XAML 中使用 TreeView
,通常你会定义 ItemTemplate
来指定如何显示数据,并且可以通过绑定 ItemsSource
来填充 TreeView
数据。
下面是一个简单的 TreeView
XAML 示例:
xml
<TreeView x:Name="myTreeView"
SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在这个例子中,每个 TreeViewItem
都假定绑定到一个拥有 Name
和 Children
属性的对象,其中 Name
是显示给用户的文本,Children
是一个集合,表示子节点。
后台代码 (C#) 中关于填充 TreeView
的简单示例:
csharp
public class MyItem
{
public string Name { get; set; }
public ObservableCollection<MyItem> Children { get; set; }
}
// ...
myTreeView.ItemsSource = new ObservableCollection<MyItem>
{
new MyItem
{
Name = "Parent Item",
Children = new ObservableCollection<MyItem>
{
new MyItem { Name = "Child Item 1" },
new MyItem { Name = "Child Item 2" }
}
}
};
在这个例子中,我们创建了一个简单的数据模型 MyItem
,它具有一个用于显示的 Name
属性和一个 Children
集合。TreeView
将显示这些项,并允许用户展开和折叠它们来查看层次结构。
最后,还可以通过事件处理来响应用户的交互,比如当用户选择不同的 TreeViewItem
时,可能需要执行一些操作:
csharp
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
MyItem selectedItem = e.NewValue as MyItem;
// 在这里处理 selectedItem
}
通过这些基本的组件和概念,你可以构建出复杂的层次结构界面,适用于文件浏览器、菜单结构等应用场景。