在 Windows Form 应用中,我们碰到需要展开一个TreeView 控件的所有树节点的时候很简单,微软已经替我们提供了ExpandAll 方法,我们只要简单的一行代码tv_QTree.ExpandAll();就可以了。即 System.Windows.Forms 命名空间的 TreeView.ExpandAll 方法 。

在WPF中,我们会发现,System.Windows.Controls.TreeView 中没有了 ExpandAll 方法。唯一跟展开有关系的属性和方法就是每一个TreeViewItem 中有一个属性IsExpanded 属性。这个属性定义这个节点是否打开。MSDN帮助如下:

Gets or sets whether the nested items in a TreeViewItem are expanded or collapsed. This is a dependency property.

这时候如何办呢? 很简单,自己写个递归,遍历这个树的每一个子节点,然后把每一个子节点的 IsExpanded 设置为 true.

你可以通过以下几个链接看到这个解决方案:

我们可以在上面解决方案基础上进一步发展。

用扩展方法来给 System.Windows.Controls.TreeView 类扩展个 ExpandAll方法方法。有关扩展方法的一些基础知识可以参看我之前的博客:C#3.0 中的扩展方法 (Extension Methods)

我的扩展方法代码如下:

///

/// 郭红俊的扩展方法

///

public static class ExtensionMethods

{

///

///

///

///

public static void ExpandAll(this System.Windows.Controls.TreeView treeView)

{

ExpandInternal(treeView);

}

///

///

///

///

private static void ExpandInternal(System.Windows.Controls.ItemsControl targetItemContainer)

{

if (targetItemContainer == null) return;

if (targetItemContainer.Items == null) return;

for (int i = 0; i < targetItemContainer.Items.Count; i++)

{

System.Windows.Controls.TreeViewItem treeItem = targetItemContainer.Items[i] as System.Windows.Controls.TreeViewItem;

if (treeItem == null) continue;

if (!treeItem.HasItems) continue;

treeItem.IsExpanded = true;

ExpandInternal(treeItem);

}

}

}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1773467

wpf展开树节点_WPF中展开一个TreeView控件的所有树节点相关推荐

  1. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

    WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色  在B/S开发中,对TreeView控件要改变当前选中节点的颜色比较方便,其有相应的SelectedNodeChanged事件 ...

  2. 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)

    一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...

  3. C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标

    在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果 ...

  4. android treeview 树形结构,前端开发中,使用TreeView控件创建树形结构

    原标题:前端开发中,使用TreeView控件创建树形结构 Wijmo是一款使用Type编写的新一代Java/HTML5控件集.它秉承触控优先的设计理念,在全球率先支持AngularJS,并提供性能卓越 ...

  5. WinCC笔记:01.TreeView控件 —— (2)连接数据库创建节点

    目录 一.最终效果图 二.数据库一览 三.代码 四.代码分析 一.最终效果图 二.数据库一览 这里使用的是SQL Server Tools 18,可以链接到WinCC自动生成的数据库.首先使用WinC ...

  6. TreeView控件的展开与折叠

    在窗体中添加一个TreeView控件,设置CheckBox属性为True,绑定数据 Archive jkj = new Archive();//自定义类         public void Bin ...

  7. WPF TreeView 控件样式

    TreeView 树视图(TreeView)控件以树的方式显示集合,可以显示层次关系. Nodes属性 该属性用于设计TreeView控件的节点. 具体方法 在TreeView的属性栏找到Nodes, ...

  8. Winform编程中的treeview控件

    Winform编程中的treeview控件 treeview基础操作 treeview添加.删除节点操作 treeview节点展开与折叠 treeview节点重命名 treeview获取节点集合并设置 ...

  9. C#——树视图TreeView控件使用

    C#--TreeView控件使用 说明 TreeView Nodes属性 ImageList属性 Scrollable属性 ShowLines属性 ShowPlusMinus属性 ShowRootLi ...

最新文章

  1. [JS] for-each和map()的区别
  2. python 异常_一文掌握 Python 异常处理的所有知识点
  3. 想咸鱼翻身不粘锅?加油
  4. Java泛型通用常量类案例
  5. 计算机操作系统——处理机调度算法
  6. matlab 光谱噪声,环境小卫星高光谱影像条纹噪声去除程序IDL版
  7. linux查看宽带ip是否动态,linux CentOS系统查看实时宽带的办法
  8. 手把手教你如何利用Kickstart自动安装虚拟机
  9. kubernetes的常用命令
  10. python能当黑客吗_如何成为一名黑客?(转)
  11. excel报表汇总怎么做?
  12. Linux系统 应急响应自动化检测工具 GScan ——使用教程
  13. oracle新增字段时提示数据类型不正确
  14. 阿里云服务器ECS到底是什么?
  15. 可变剪切(选择性剪接)rmats2sashimiplot可视化安装与使用
  16. python3 英文字母单数转复数
  17. Android 模拟器中的menu键
  18. RPC框架系列——Avro
  19. 【个人总结】2020计算机保研经历(北大信科、上交、浙大、南大、中科院)
  20. 基于C++的OpenCV(八)图像处理

热门文章

  1. python爬虫能赚钱吗-个人利用Python爬虫技术怎么挣钱-10万被动收入
  2. Cesium近景蓝色晴空万里天空盒子替换方法源码及图片资源-实测可用
  3. TP-Link wr886n 路由器插上光纤后网速变慢问题
  4. c语言的浪漫,c语言浪漫情话
  5. java时间加减分钟
  6. 使用Yoast SEO提交Sitemap
  7. WINDOWS 系统错误代码
  8. RabbitMQ:The channelMax limit is reached. Try later.
  9. c语言中dna图案打印题,C语言打印DNA螺旋
  10. 做网站的人必须遵守的N大定律