HierarchicalDataTemplate (一)

2023-11-05

能够帮助层级控件显示层级数据的模板是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;
        }
    }
}

 

效果图:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HierarchicalDataTemplate (一) 的相关文章

随机推荐

  • 使用CLion单步调试Caffe

    Caffe With CLion CLion介绍 CLion是JetBrain产品线较新的一员 主要针对C C 语言的一款IDE 说起JetBrain大家应该都用过他们出的Pycharm吧 一句话形容这家公司的产品就是JetBrain出品
  • 用Java实现递归策略算法的编写汇总

    算法设计与分析 实验一 递归策略运用练习 一 实验目的 本次实验是针对递归算法的算法设计及应用练习 旨在加深学生对该算法原理的理解 提高学生运用该算法解决问题的能力 二 实验项目 1 运用递归策略设计算法实现下述题目的求解过程 题目列表如下
  • vue cli 报错 WARNING in ..node_modulesVuedistvue.runtime.esm.js

    vue cli 报错 WARNING in node modules Vue dist vue runtime esm js 解决 src文件夹 main js中 修改 import Vue from Vue 为小写 vue
  • 终于搞定了stackoverflow的富文本编辑器pagedown

    原创不易 转载请注明出处 终于搞定了stackoverflow的富文本编辑器pagedown 这个编辑器在最代码平台上运行了大半年发现确实很多人不喜欢 所以选择了ckedidor 来show下非常符合攻城师的编辑器吧 虽然刚开始可能不习惯
  • 从Linux界面下载文件有空格问题报错

    解决关于从Linux界面下载文件有空格问题报错 原因 解决方案 从CMD界面 下载文件因文件名中有空格字符导致无法下载到本地 原因 查看截图 解决方案 在全路径加上双引号即可解决问题 注意一点 双引号是英文模式的 P S 我是Roy 纯手工
  • Dubbo知识点梳理

    文章预览 Apache Dubbo 1 应用架构的演进过程 目标 路径 讲解 1 1 主流的互联网技术特点 1 2 架构演变的过程 1 2 1 单一应用架构 all in one 1 2 2 垂直应用架构 1 2 3 分布式服务架构 1 2
  • 工具--Git详解

    工具 Git详解 零 文章目录 一 什么是版本控制 1 什么是版本控制 版本控制 Revision control 是一种在开发的过程中用于管理我们对文件 目录或工程等内容的修改历史 方便查看更改历史记录 备份以便恢复以前的版本的软件工程技
  • Android使用Fiddler模拟弱网络环境测试

    前言 现在的Android软件 基本上都会有网络请求 有些APP需要频繁的传输数据时对于网络请求的稳定性和在特殊网络条件下的兼容性有要求 但是我们在测试的时候又很难模拟那种弱网络差网络的情况 今天就给大家分享一篇干货来模拟弱网络情况 正文
  • QMT的交易示例中《调整至目标持仓Demo》的bug代码梳理

    encoding gbk 调仓到指定篮子 import pandas as pd import numpy as np import time from datetime import timedelta datetime 自定义类 用来保
  • Linux--文件内容查看命令

    目录 1 查看文件内容 1 cat 2 more 5 tail 2 合并文件 3 向文件中写入数据 1 查看文件内容 1 cat 2 more more 文件名 空格 回车 3 less less 文件名 看完内容之后不会显示到屏幕上 相当
  • qemu 退出方法

    qemu 退出方法 ctrl A 按 X
  • 重新排列数组的数,使得负数都排在正数的前面

    重新排列数组的数 使得负数都排在正数的前面 问题描述 设A是由n个非0实数构成的数组 设计一个算法重新排列数组的数 使得负数都排在正数的前面 要求算法使用O n 的时间和O 1 的空间 解决思路 对于这样一个问题 我们最容易想到的思路是对数
  • 利用SPSS进行person相关分析及散点图绘制

    利用SPSS进行person相关分析及散点图绘制 德哥 SCI医学论文和国内核心论文中 我们会经常对两个变量进行相关性比较 使用person相关分析及散点图绘制可以很好的进行表达相关关系 有些时候审稿人也会要求你做person系数及散点图
  • Linux查询用户创建的后台程序

    使用jobs可以看到后台的任务 jobs l 使用kill可以杀掉指定的后台任务
  • AD(15)中设定PCB板尺寸大小的方法

    1 新建PCB File New PCB 2 选择 选择Place Line画出板子的形状和大小 封闭图形 画出你想要的封闭图形 3 全选刚才画出的图形边框线 4 点击design gt board shape gt define from
  • java案例16:模拟默认密码的生成

    思路 模拟默认密码的生成 手动输入用户名 根据用户名自动生成默认密码 在生成密码时 将用户名反转即为默认密码 1 需要用Scanner类相关的方法实现键盘输入 用字符串接收 2 实现密码自动生成 遍历字符串 默认密码就是手动输入用户名的反转
  • 多模态论文汇总

    综述 Multimodal Machine Learning A Survey and Taxonomy 论文网址 https arxiv org pdf 1705 09406 pdf 中文翻译 Multimodal Machine Lea
  • 算法导论 学习笔记 第六章 堆排序

    实际中 待排序的数很少是单独的数值 它们通常是称为记录的数据集的一部分 每个记录包含一个关键字 即排序问题中要重排的值 记录的剩余部分由卫星数据组成 通常是要与关键字一同存取的 如果每个记录包含大量卫星数据 我们通常重排记录指针的数组 而非
  • JS深层次多级对象Key的遍历方法,将多层级对象扁平化

    文章目录 一 深层次多级对象介绍 问题提出 二 深层次多级对象Key的遍历方法实现 三 验证一下我们的遍历函数 四 将多级对象扁平化 总结与应用 最近整理之前写过的博客 发现深度拷贝对象的一段代码 想着深度拷贝后我怎么来验证两个对象的值 是
  • HierarchicalDataTemplate (一)

    能够帮助层级控件显示层级数据的模板是HierarchicalDataTemplate 一般常用于TreeView控件和MenuItem控件 显示层级数据 数据类 using System Collections Generic namesp