WPF TreeView 展开到指定节点
最近在做一个交换机管理的项目,有一个交换机的树,做树的搜索的时候 展开节点居然有点难,自己记录下来 ,以后用的到的时候可以看一下。
展开代码如下,其中
SwitchTree是treeview空间的名称,TreeNode 是绑定在树上的数据类的名称,请注意
private void ExpendTree(TreeNode node)
{
SwitchTree.UpdateLayout();
for (int i = ; i < SwitchTree.Items.Count; i++)
{
TreeNode findNd = SwitchTree.Items[i] as TreeNode;
TreeViewItem ti = SwitchTree.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
if (findNd == node && ti != null)
{
ti.IsExpanded = true;
ti.IsSelected = true;
if (ti.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
{
ti.UpdateLayout();
}
//展开
EependTreeByNode(ti);
break;
}
else
{
if (ti != null)
{
TreeViewItem treeViewItem= RecurFindeNode(node, ti);
if (treeViewItem == null)
{
ti.IsExpanded = false;
continue;
}
//展开
EependTreeByNode(treeViewItem);
break;
} }
}
//EependTreeByNode(node);
} private TreeViewItem RecurFindeNode(TreeNode n, TreeViewItem items)
{
TreeViewItem tv = null;
if (n != null && items != null && items.HasItems)
{
items.IsExpanded = true;
foreach (var item in items.Items)
{
var node = item as TreeNode;
if (node == null || (node.nodes!=null&&!node.nodes.Any()))
{
continue;
}
if (items.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
{
items.UpdateLayout();
}
TreeViewItem m_item = items.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem; if (n == node && m_item != null)
{
//EependTreeByNode(m_item);
tv = m_item;
}
else
{ TreeViewItem treeNode = RecurFindeNode(n, m_item);
if (treeNode != null)
{
tv = treeNode;
break;
}
else
{
//items.IsExpanded = false;
}
}
}
} return tv;
} private void EependTreeByNode(TreeViewItem contenier)
{ if (contenier != null)
{
//if (contenier.HasItems)
//{
contenier.IsExpanded = true;
contenier.IsSelected = true;
//}
//else
//{
// TreeViewItem parent = (TreeViewItem)contenier.Parent;
// if (parent != null)
// {
// parent.IsExpanded = true;
// parent.IsSelected = true;
// }
//}
if (contenier.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
{ contenier.UpdateLayout(); }
}
}
WPF TreeView 展开到指定节点的更多相关文章
- wpf treeview 数据绑定 递归绑定节点
1.先上效果 将所有节点加入ComboBox数据源,在ComboBox中选择时下方Treeview显示该节点下的子节点. 1.xaml文件,将以下代码加入界面合适位置 <StackPanel&g ...
- C# 保存和读取TreeView展开的状态
附件 http://files.cnblogs.com/xe2011/ReadAndSaveTreeViewState.rar 保存和读取TreeView展开的状态 节点{ImageIndex,Is ...
- ztree根据treeId展开指定节点并触发单击事件
ztree.expandNode(ztree.getNodeByParam("id",treeId,null));//展开指定节点 ztree.selectNode(ztree.g ...
- EasyUI的tree展开所有的节点或者根据特殊的条件控制展示指定的节点
展示tree下的所有节点$(function(){ $('#t_funinfo_tree').tree({ checkbox: true, url:"<%=basePath %> ...
- WPF TreeView Indent 减少节点的缩进
www.swack.cn - 原文链接:WPF TreeView Indent 减少节点的缩进 问题 最近一个需求,需要在界面中实现Windows资源管理器TreeView的界面.但是我发现,我做出的 ...
- WPF TreeView HierarchicalDataTemplate
原文 WPF TreeView HierarchicalDataTemplate HierarchicalDataTemplate 的DataType是本层的绑定,而ItemsSource是绑定下层的 ...
- 修复jquery.treeview的增加子节点的方法的bug
1.修复理由 在一个android项目中用到了treeview控件(本来自己通过android的原生api实现了一个http://www.cnblogs.com/Mr-Nobody/p/3527688 ...
- Bootstrap treeview增加或者删除节点
参考(AddNode: http://blog.csdn.net/qq_25628235/article/details/51719917,deleteNode:http://blog.csdn.ne ...
- Tree树节点选中及取消和指定节点的隐藏
指定节点变色 指定节点隐藏 单击节点 未选中则选中该节点 已选中则取消该节点 前台: 1.HTML <ul id="listDept" name="listDept ...
随机推荐
- Kafka Connect HDFS
概述 Kafka 的数据如何传输到HDFS?如果仔细思考,会发现这个问题并不简单. 不妨先想一下这两个问题? 1)为什么要将Kafka的数据传输到HDFS上? 2)为什么不直接写HDFS而要通过Kaf ...
- poj1459 最大流Dinic
比较简单. #include<stdio.h> #include<string.h> #include<queue> #define maxn 110 #defin ...
- winfrom 中 label 文字随着窗体大小变化
在进行winfrom 开发过程中,窗体中的文字需要随着窗体大小变化,否则会影响窗体的美观和客户的体验. 之前曾经试过几种方法效果都不满意,例如将label的Dock 属性设置为fill.这样的设置对解 ...
- Android中后台线程如何与UI线程交互
我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须 ...
- oracle trunc(d1[,c1])
[功能]:返回日期d1所在期间(参数c1)的第一天日期 [参数]:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) [参数表]:c1对应的参数表: 最近0点日期: 取消参数c1或j 最近的 ...
- es6 默认参数、rest参数、扩展运算符
1.默认值 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. function sayHello(name){ //传统的指定默认参数的方式 var name ...
- HZOJ 那一天她离我而去
一个数据水到不行的题,各路大佬用各种方法A掉了这个题(比如A*,最短路,dfs……). 这里只说一下我的暴力和被碾压的正解. 暴力AC系列: 要找过1点的最小环,那么这个环可以拆成两部分,与1相连的两 ...
- oracle函数 ceil(x)
[功能]返回大于等于x的最小整数值 [参数]x,数字型表达式 [返回]数字 [示例] select ceil(3.1),ceil(2.8+1.3),ceil(0) from dual; 返回4,5,0
- macOS上搭建RabbitMQ+MQTT服务器
1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...
- 详解ThinkPHP支持的URL模式有四种普通模式、PATHINFO、REWRITE和兼容模式
URL模式 URL_MODEL设置 普通模式 0 PATHINFO模式 1 REWRITE模式 2 兼容模式 3 如果你整个应用下面的模块都是采用统一的URL模式 ...