WPF 中的 TreeView 选中 指定 节点

  • 基本原理

TreeView节点一般包装了一个自定义的对象,这个对象包含ID、DisplayName等各类属性。我的一个项目里有TreeView加载后默认选中根节点,或者运行中后台指定选中某个节点的需求。比如对节点进行上移下移操作后,选中被操作的节点以优化视觉效果。

基本原理

1.TreeView由TreeViewItem构成,TreeViewItem封装了自定义的数据对象,这个TreeViewItem称为container。
2.要选中某个节点,必须通过这个节点的TreeViewItem.Focus()或者TreeViewItem.isSelected=true这两个方法之一来设置选中状态。
3.那么要通过已知的自定义对象的某个数据(比如Id或者DisplayName的)来设置对应节点选中,就必须获得封装这个自定义对象的TreeViewItem。
4.获得封装自定义对象的TreeViewItem,可以通过father_treeviewItem.ItemContainerGenerator.ContainerFromItem(node)来获得。
5.father_treeviewItem必须是要选中的自定义对象对应的节点 的 上一个父节点 的 TreeViewItem。

public void SelectNodeById(int i)//根据ID选中节点
{//tv是TreeView对象实例化后的名称//depttreenode是自定义数据对象,对应一个节点的数据//i为自定义数据对象的id属性TreeViewItem tvi = tv.ItemContainerGenerator.ContainerFromItem(tv.Items[0]) as TreeViewItem;GoDeepFindNode(i, tvi);}
public void GoDeepFindNode(int i,TreeViewItem t)//i为节点中自定义对象的属性ID
{foreach (depttreenode node in t.Items){TreeViewItem tvi = t.ItemContainerGenerator.ContainerFromItem(node) as TreeViewItem;if (node.id == i){tvi.Focus();break;}else{GoDeepFindNode(i, tvi);}}
}

需要注意的是:
1.上述代码需要在TreeView的loaded事件完成之后使用,loaded事件在vs中的提示是:“当对元素进行布局、呈现,且可将其用于交互时发生”。
2。如果在Loaded事件完成之前调用代码,containerFromItem会返回null。
3.如果想使用代码,有两种情况,要么在onload事件中调用,要么就在确定loaded事件已完成的情况下调用,比如已经能看到TreeView了,再调用。

WPF中的TreeView选中指定节点相关推荐

  1. 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo

    写在前面 嗯,整理K8s中pod调度相关笔记,这里分享给小伙伴 博文内容涉及: kube-scheduler组件的简述 Pod的调度(选择器.指定节点.主机亲和性)方式 节点的coedon与drain ...

  2. C#中读取xml文件指定节点

    假设xml文件内容是 <?xml version="1.0" encoding="utf-8"?> <Workflow>   <A ...

  3. jstree 选中指定节点-yellowcong

    项目中使用的树框架是Jstree,经常会遇到默认选中节点的问题,刚开始使用Jstree的同学,肯定是会被官方的API坑哭了,JsTree官方API,这篇文章介绍jstree 默认某个节点选中,和如何用 ...

  4. C# TreeView基本操作及其节点增,删,改(3级节点)

    TreeView 节点操作: 先选择某一节点: 添加子节点:             TreeNode temp = new TreeNode("name");           ...

  5. ASP.Net中的TreeView控件中对节点的上移和下移操作

    Web中的TreeView中的没有PreNode和NextNode属性. 但它的集合属性中有一个IndexOf属性,从而能够找到它的前一个节点知后一个节点. TreeView中要么只有一个根节点:要么 ...

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

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

  7. WPF中TreeView.BringIntoView方法的替代方案

    WPF中TreeView.BringIntoView方法的替代方案 周银辉 WPF中TreeView.BringIntoView()方法并不是那么地好用,不少时候会没有效果,这里有一个替代方案,调用S ...

  8. zTree实现单独选中根节点中第一个节点

    zTree实现单独选中根节点中第一个节点 1.实现源代码 <!DOCTYPE html> <html> <head><title>zTree实现基本树& ...

  9. oracle怎么从大字段中取节点,Oracle数据库 获取CLOB字段存储的xml格式字符串指定节点的值...

    参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串 背景:在写存储过程时,需要获取表单提交的信息.表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如 ...

最新文章

  1. 支持Android4.0以下webp的使用
  2. Unix系统编程()main函数的命令行参数
  3. Spring Cloud配置–外部化应用程序配置
  4. 服务器虚拟化网口,服务器安装虚拟网口
  5. 十大经典排序算法与算法复杂度
  6. ASP.NET MVC带来的变化
  7. Oracle简单SQL语句(详细!!!)
  8. c语言中的符号总结,C语言中的符号总结
  9. 220套html模版百度云,220套静态网页模板
  10. GB50052-2009供配电系统设计规范1
  11. python标准库不需要导入即可使用其中的所有对象和方法_Python扩展库需导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法...
  12. 字节大幅压缩了22~23年的招聘
  13. 计算机无线模块怎样关闭,台式机无线上网设置_台式电脑如何关闭WIFI?
  14. 昆山中创张嘉平:软件成为软件工程才容易成功
  15. 用指针写藏头诗c语言,智能藏头诗小程序:小程序可以自动写诗啦!为“Ta”写首诗表白~...
  16. vue本页面跳转不刷新
  17. 机电一体化综合实训考核设备
  18. MATLAB回归分析命令——regress命令
  19. 数字逻辑电路仿真电路:与非门组成的三人表决器
  20. Python保姆级教程.pdf,太全了!

热门文章

  1. Red Hat Enterprise Linux (RHEL) 8.6 发布(含下载)
  2. 【论文速递】ISPRS2022 :一种新颖的结合几何语义信息的星载SAR数据三维定位方法
  3. PHP如何读取txt文档域名集,并且生成数组/随机显示一个
  4. org.apache.tools.ant.Task在哪个jar包
  5. 【互动多媒体】应用形式(二)体感换装/虚拟试衣
  6. java 处理图片图片合成
  7. CodeForces - 766E  (树形dp+二进制)
  8. 新坑--阿里云图库引入
  9. MyBatis 自关联查询省市区地区数据,一对多自关联查询
  10. 鲍尔默最后一次员工大会:声泪俱下别微软