WPF —— TreeView树形控件

1 TreeView简介

 TreeView 表示一个控件,该控件在树结构(其中的项可以展开和折叠)中显示分层数据。 

    TreeView 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串、图像或面板) 。

2 Tree View常用的属性

        meun 水平菜单
        contextMenu 内容菜单
        TreeView 树形菜单,

        SelectedItemChanged 当选择子项发生改变的时候触发

        TreeViewItem 子项

3关于Tree View的实例 使用动态绑定数据

 <StackPanel><TreeView Name="t1" SelectedItemChanged="t1_SelectedItemChanged"><!--静态数据绑定 TreeViewItem 子项--><TreeViewItem Header="实验小学"><TreeViewItem Header="一年级"></TreeViewItem><TreeViewItem Header="二年级"></TreeViewItem><TreeViewItem Header="三年级"></TreeViewItem><TreeViewItem Header="四年级"></TreeViewItem></TreeViewItem><TreeViewItem Header="外国语小学"><TreeViewItem Header="炼器基础篇"></TreeViewItem><TreeViewItem Header="筑基篇"></TreeViewItem><TreeViewItem Header="结丹凝丹篇"></TreeViewItem><TreeViewItem Header="元婴化婴篇"></TreeViewItem></TreeViewItem><TreeViewItem Header="裕禄小学"></TreeViewItem><!--动态绑定数据:单个对象绑定例如textblock label textbox等绑定list集合 listbox、combobox、各种菜单、datagrid德国可以绑定属性一般都是: itemsoure--><TreeView ItemsSource="{Binding }" Name="t2"><!--子项绑定是其中一个对象的属性--><TreeView.ItemTemplate><!--树形数据的模板 ItemsSource 子级菜单对象的集合--><HierarchicalDataTemplate ItemsSource="{Binding SubMenus}"><!--绑定子集标题--><TextBlock Text="{Binding Name}"></TextBlock></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView></TreeView></StackPanel>

模型类的两种方法

一:

MenuInfo m1 = new MenuInfo(){Name = "实验小学",// 存放子集标题对象SubMenus = new List<MenuInfo>(){new MenuInfo() {Name= "一年级",SubMenus= new List<MenuInfo>(){new MenuInfo() {Name = "语文"},new MenuInfo() {Name = "数学"},new MenuInfo() {Name = "体育"},new MenuInfo() {Name = "英语"},}},new MenuInfo() { Name="二年级"},new MenuInfo() { Name="三年级"},new MenuInfo() { Name="四年级"},new MenuInfo() { Name="五年级"},}};MenuInfo m2 = new MenuInfo(){Name = "特殊学校",SubMenus = new List<MenuInfo>(){new MenuInfo(){Name = "一年班"},new MenuInfo(){Name = "二年班"},}};List<MenuInfo> list = new List<MenuInfo>();list.Add(m1);list.Add(m2);this.t2.ItemsSource = list;public class MenuInfo
{public string Name { get; set; }public List<MenuInfo> SubMenus { get; set; } // 子集菜单的集合public MenuInfo(string n, MenuInfo m1) {Name = n;if(m1 != null){// 如果父级对象的subMenus 为null 则新建,如果不为空 则添加if (m1.SubMenus is null) m1.SubMenus = new List<MenuInfo>();m1.SubMenus.Add(this);}}public MenuInfo(){}
}

二:

 

        // 标题对象MenuInfo gaibang = new MenuInfo("丐帮",null);// 二级菜单MenuInfo qiaofeng = new MenuInfo("乔峰", gaibang);MenuInfo zhuangjuxian = new MenuInfo("庄聚贤", gaibang);MenuInfo wuzhuanglao = new MenuInfo("五长老",gaibang);// 三级菜单MenuInfo xifu1 = new MenuInfo("阿紫", qiaofeng);MenuInfo xifu2 = new MenuInfo("阿紫她姐", qiaofeng);List<MenuInfo> list = new List<MenuInfo>();list.Add(gaibang);this.t2.ItemsSource = list;}private void t1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e){MessageBox.Show((t1.SelectedItem as TreeViewItem).Header.ToString());}
}
public class MenuInfo
{public string Name { get; set; }public List<MenuInfo> SubMenus { get; set; } // 子集菜单的集合public MenuInfo(string n, MenuInfo m1) {Name = n;if(m1 != null){// 如果父级对象的subMenus 为null 则新建,如果不为空 则添加if (m1.SubMenus is null) m1.SubMenus = new List<MenuInfo>();m1.SubMenus.Add(this);}}public MenuInfo(){}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS ARKit】3D 视频

在AR 中播放视频也是一种常见的需求&#xff0c;如在一个展厅中放置的虚拟电视上播放宣传视频&#xff0c;或者在游戏中为营造氛围而设置的虚拟电视视频播放&#xff0c;或者在识别的2D个人名片上播放自我介绍视频&#xff0c;因视频具有静态图像无法比拟的综合信息展示能力&am…

NoSQL(非关系型数据库)之Redis

目录 一、 关系型数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 区别 1.3.1 数据存储方式不同 1.3.2 扩展方式不同 1.4 非关系型数据库产生背景 二、 Redis简介 2.1 Redis概述 2.2 Redis优点 2.3 Redis为什么这么快&#xff1f; 总结 一 数据流…

23种设计模式的概念

一、设计模式的来源 设计模式&#xff08;Design Pattern&#xff09;是前辈们对代码开发经验的总结&#xff0c;是解决特定问题的一系列套路。它不是语法规定&#xff0c;而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995 年&#xff0c;…

华为数通方向HCIP-DataCom H12-821题库(多选题:241-260)

第241题 [RTAospf100 [RTA-ospf-100]silent-intefaceGigabitEthernet 1/0/0上面是路由器RTA的部分配置,对于此部分的配置描述,正确的是: A、接口gigabitethemet 1/0/0的直连路由仍然可以发布出去 B、无法与该接口的直连邻居形成邻居关系 C、禁止接口gigabi tethemet 1/0/0发…

vscode 自用的一些配置

目录 1&#xff0c;修改默认配置1&#xff0c;关闭预览模式2&#xff0c;取消自动定位到左侧边栏 2&#xff0c;自定义快捷键1&#xff0c;手动定位到左侧边栏2&#xff0c;关闭其他3&#xff0c;其他常用快捷键 3&#xff0c;插件1&#xff0c;和 git 相关的GitlensGit Histor…

C++ 2024-4-1 作业

#include <iostream> using namespace std;class A { public:int a;A(int a):a(a){cout<<"A的有参构造"<<endl;} }; class B:virtual public A { public:int b;B(int a,int b):A(a),b(b){cout<<"B的有参构造"<<endl;} }; cl…

用Wireshark解码H.264

H264&#xff0c;你不知道的小技巧-腾讯云开发者社区-腾讯云 这篇文章写的非常好 这里仅做几点补充 init.lua内容&#xff1a; -- Set enable_lua to false to disable Lua support. enable_lua trueif not enable_lua thenreturn end-- If false and Wireshark was start…

华为云RDS for Mysql入门与配置

华为云RDS for MySQL支持混合SSD实例&#xff0c;它结合了华为云容器、本地SSD盘和高速云盘。 优势&#xff1a; 主备实例提供故障自动切换和手动切换&#xff0c;业务中断时间为秒级&#xff0c;以及异地灾难备份&#xff0c;最大程度上在出现故障的情况下保障整个数据库集群…

适用于智能断路器、新能源汽车充电枪锁、电动玩具、电磁门锁等的直流电机驱动芯片D6289ADA介绍

应用领域 适用于智能断路器&#xff08;家用或工业智能空开&#xff09;、新能源汽车充电枪锁、电动玩具、电磁门锁、自动阀门等的直流电机驱动。 功能介绍 D6289ADA是一款直流马达驱动芯片&#xff0c;它有两个逻辑输入端子用来控制电机前进、后退及制动。该电路具有良好的抗干…

天池医疗AI大赛[第一季] Rank8解决方案[附TensorFlow/PyTorch/Caffe实现方案]

团队成员&#xff1a;北京邮电大学 模式识别实验室硕士研究生 今年5月&#xff0c;参加了天池医疗AI大赛&#xff0c;这次比赛是第一次参加此类的比赛&#xff0c;经过接近半年的比赛&#xff0c;终于10月落下帷幕&#xff0c;作为第一次参加比赛&#xff0c;能在接近3000支队…

计算矩阵中0的个数

在MATLAB中&#xff0c;计算矩阵中0的个数可以通过多种方法实现。最直接的方法之一是使用find函数或者逻辑运算符结合sum函数。以下是几种计算矩阵中0的个数的方法&#xff1a; 方法1&#xff1a;使用find函数 % 假设A是你的矩阵 A [1 0 3; 4 5 0; 7 8 9];% 计算矩阵中0的个…

标定系列——预备知识-OpenCV中矫正相关函数(十二)

标定系列——预备知识-OpenCV中矫正相关函数&#xff08;十二&#xff09; 说明记录 说明 记录了OpenCV中的矫正相关函数的使用 记录

ubuntu 使用 apt 安装、卸载 mysql

安装 mysql 更新 apt 列表 apt-get upgrade安装 mysql apt-get install mysql-server启动和关闭 mysql # 启动: service mysql start# 重启: service mysql restart # 关闭: service mysql stop登录数据库&#xff0c;修改 root 账号密码 mysql -uroot -p# 不用输入任何…

Can‘t connect to server on ‘localhost‘ (10061)

问题&#xff1a;电脑关机重启后&#xff0c;连接不上mysql了&#xff0c;报错信息如下&#xff1a;2002 - Cant connect to server on localhost (10061)解决办法&#xff1a;很大的原因是mysql服务没有启动&#xff0c;需要你重启一下mysql&#xff1a; 以管理员的身份运行cm…

安卓Glide加载失败时点击按钮重新加载图片

需求 假设此时已经用load指定一个url: String&#xff0c;又用into指定了一个img: ImageView开始加载&#xff0c;但是网络突然中断&#xff0c;导致图片加载失败。在这种情况下&#xff0c;想要通过点击一个Button重新加载。 Glide.with(context).load(url).placeholder(loa…

从PDF到高清图片:一步步学习如何转换PDF文件为高清图片

引言 PDF文件是一种便携式文档格式&#xff08;Portable Document Format&#xff09;&#xff0c;最初由Adobe Systems开发&#xff0c;用于在不同操作系统和软件之间保持文档格式的一致性。PDF文件通常包含文本、图片、图形等多种元素&#xff0c;并且可以以高度压缩的方式存…

VScode 集成终端设置默认打开当前文件夹 mac系统

一.快捷键设置 搜索 openInIntegratedTerminal 如图&#xff1a; 二.设置cmd 默认打开位置 点击设置 搜索 ntegrated:cwd 如下图&#xff1a; 三.查看ip 快捷指令&#xff1a; ipconfig getifaddr en0

ubuntu 20.04 SD 卡分区类型 msdos 改为 GPT 的方法

前言 默认 SD 卡分区是 FAT32 格式&#xff0c;为了用于嵌入式Linux ext4 文件系统&#xff0c;需要改为 ext4 文件系统&#xff0c;但是SD 卡分区类型默认是 msdos 类型&#xff0c;也就是 MBR 类型&#xff0c;不是 GPT 类型。 烧写 ext4 分区表&#xff0c;或者使用 ubuntu…

linxu tensorflow-1.13.1 C++动态库编译

1、版本要求 版本 Python 版本 编译器 编译工具 tensorflow-1.13.1 2.7、3.3-3.6 GCC 4.8 Bazel 0.19.2 tensorflow-1.12.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.11.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.10.0 …

SpringBoot中Bean注册

Bean注解 Springboot中默认扫描启动类所在的包及其子包。 比如这里的DemoApplication是启动类&#xff0c;那么spring boot默认扫描com.example.demo这个包。 Controller、Service、Repository这三个注解是Component的衍生注解&#xff0c;它们经常会被添加到Controller层、Se…