HierarchicalDataTemplate (一)

能够帮助层级控件显示层级数据的模板是HierarchicalDataTemplate

一般常用于TreeView控件和MenuItem控件,显示层级数据。

 

数据类:

using System.Collections.Generic;

namespace CSDNWpfApp.com.data
{
    //公司数据
    public class CompanyData
    {
        public string Name { get; set; }
        public List<DempartmentData> DempartmentDatas { get; set; }
    }

    //部门数据
    public class DempartmentData
    {
        public string Name { get; set; }
        public List<EmployeeData> EmployeeDatas { get; set; }
    }

    //员工
    public class EmployeeData
    {
        public string Name { get; set; }
    }

}

窗口前台:

<Window x:Class="CSDNWpfApp.TreeViewWindow"
        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:CSDNWpfApp" xmlns:da="clr-namespace:CSDNWpfApp.com.data"
        mc:Ignorable="d"
        Title="TreeViewWindow" Height="450" Width="800">
    <Window.Resources>
        
        <HierarchicalDataTemplate DataType="{x:Type da:CompanyData}" ItemsSource="{Binding Path=DempartmentDatas}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
        
        <HierarchicalDataTemplate DataType="{x:Type da:DempartmentData}" ItemsSource="{Binding Path=EmployeeDatas}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
        
        <HierarchicalDataTemplate DataType="{x:Type da:EmployeeData}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
        
    </Window.Resources>
    <Grid>
        <TreeView x:Name="treeView" HorizontalAlignment="Left" Height="350" Margin="30,30,0,0" VerticalAlignment="Top" Width="440"/>
        <Button x:Name="button" Content="测试" HorizontalAlignment="Left" Margin="575,61,0,0" VerticalAlignment="Top" Width="105" Height="69" Click="Button_Click"/>

    </Grid>
</Window>

解析说明:

引用了数据类的名称空间  xmlns:da="clr-namespace:CSDNWpfApp.com.data"

DataType指定了HierarchicalDataTemplate模板用哪种数据类型

ItemsSource指定下一层显示哪些数据

内容指定了一个TextBlock,并绑定了需要显示当前指定类型数据中的属性

 

窗口后台:

using CSDNWpfApp.com.data;
using System.Collections.Generic;
using System.Windows;

namespace CSDNWpfApp
{
    /// <summary>
    /// TreeViewWindow.xaml 的交互逻辑
    /// </summary>
    public partial class TreeViewWindow : Window
    {
        public TreeViewWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            List<EmployeeData> employeeDatas = new List<EmployeeData>();
            employeeDatas.Add(new EmployeeData { Name = "员工1"});
            employeeDatas.Add(new EmployeeData { Name = "员工2" });


            List<DempartmentData> departmentDatas = new List<DempartmentData>();
            departmentDatas.Add(new DempartmentData { Name = "部门1", EmployeeDatas = employeeDatas });
            departmentDatas.Add(new DempartmentData { Name = "部门2", EmployeeDatas = employeeDatas });

            List<CompanyData> companyDatas = new List<CompanyData>();
            companyDatas.Add(new CompanyData { Name = "公司1", DempartmentDatas = departmentDatas });
            companyDatas.Add(new CompanyData { Name = "公司2", DempartmentDatas = departmentDatas });

            treeView.ItemsSource = companyDatas;
        }
    }
}

 

效果图:

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值