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 ...
随机推荐
- QT语言翻译
QT中多语言的实现方式: 1.代码中tr运用 2.使用工具生成ts文件 3.翻译ts文件 4.生成qm文件 5.程序加载 以下内容程序加载时放入即可. QString appPath = QCoreA ...
- c++11的新特性
好奇心来源于下面的一段代码, 一个是unordered_map, 这是c++11新加的container. 另外还有unordered_set, unordered_multimap, unorder ...
- [React Native]去掉WebStorm中黄色警告
用WebStorm开发RN难免会碰到一大堆黄色警告.就像下面这样. 其实这个错误并不会影响开发,但是作为一个上升处女座的,我很难忍.于是各种想办法. 上网查了半天发现这篇文章 http://blog. ...
- hdu5438 dfs+并查集 长春网赛
先dfs对度小于2的删边,知道不能删为止. 然后通过并查集来计算每一个分量里面几个元素. #include<iostream> #include<cstring> #inclu ...
- phpexecl
<?phpnamespace Admin\Controller;use Think\Controller;class InoutController extends Controller { p ...
- Pytorch使用tensorboardX可视化。超详细!!!
tensorboard --logdir runs 改为 tensorboard --logdir=D:\model\tensorboard\runs 重点 在网上看了很多方法后发现将原本链接中的计算 ...
- et al.
et al. 英 [ˌet ˈæl] adv. <拉>以及其他人; [例句]Earlier research in conventional RCS modelling for d ...
- oracle函数 CONCAT(c1,c2)
[功能]连接两个字符串 [参数]c1,c2 字符型表达式 [返回]字符型 同:c1||c2 [示例] select concat('010-','88888888')||'转23' 高乾竞电话 fro ...
- 模板—树上倍增LCA
int LCA(int x,int y) { if(x==y)return x; if(dep[x]>dep[y])swap(x,y); while(dep[x]<dep[y]) ;;i+ ...
- uni-app设置 video开始播放进入全屏状态
有一video标签 <video id="myVideo" :src="videoUrl"></video> 获取 video 上下文 ...