WPF树形控件TreeView使用介绍

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 节点组成的,这些节点可以无限嵌套以表示数据的层次。

以下是一些与 TreeViewTreeViewItem 相关的关键概念和属性:

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 都假定绑定到一个拥有 NameChildren 属性的对象,其中 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
}

通过这些基本的组件和概念,你可以构建出复杂的层次结构界面,适用于文件浏览器、菜单结构等应用场景。

相关推荐
无所谓จุ๊บ12 小时前
使用AI整理知识点--WPF动画核心知识
c#·wpf
xcLeigh1 天前
WPF在特定领域的应用:打造一款专业的图像编辑工具
c#·wpf
吾与谁归in2 天前
WPF给ListBox中的每一项添加右键菜单功能
c#·wpf
千里码!2 天前
RocketMQ延迟消息深度解析:原理、实践与性能调优
wpf·rocketmq
de之梦-御风3 天前
【.NET】WinForms 和 WPF 在性能方面的对比
.net·wpf
Zzu_zzx3 天前
c# wpf 开发中安装使用SqlSugar操作MySql数据库具体操作步骤保姆级教程
mysql·c#·wpf
白白白白纸呀3 天前
WPF框架---MvvmLight介绍
开发语言·c#·wpf
battlestar4 天前
WPF 解决加载顺序,Combox 增加属性,并关联text
windows·wpf
xcLeigh4 天前
WPF高级 | WPF 3D 图形编程基础:创建立体的用户界面元素
ui·3d·c#·wpf
一个处女座的程序猿O(∩_∩)O4 天前
鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态
华为·ai·wpf·harmonyos