关于TreeView ItemContainerGenerator.ContainerFromIndex 的到的值为null的处理
来源:互联网 发布:美国天然气库存数据 编辑:程序博客网 时间:2024/06/15 22:11
在TreeView中遍历子节点的时候,未展开的节点通过ItemContainerGenerator.ContainerFromIndex是得不到的,所以在遍历额时候应该对未展开的节点的,IsExpanded属性为true,并且要(需要展开的节点).UpdateLayout();更新树形结构,如下图贴张遍历树的代码:
public PublicControl.MultiSelectTreeViewItem FindTreeViewItem(ItemsControl container, object item)
{
if (null == container || null == item)
{
return null;
}
if (container.DataContext == item)
{
return container as PublicControl.MultiSelectTreeViewItem;
}
if ((container is PublicControl.MultiSelectTreeViewItem) && !((PublicControl.MultiSelectTreeViewItem)container).IsExpanded)
{
container.SetValue(PublicControl.MultiSelectTreeViewItem.IsExpandedProperty, true);
container.UpdateLayout();
}
int count = container.Items.Count;
for (int i = 0; i < count; i++)
{
DependencyObject dp = container.ItemContainerGenerator.ContainerFromIndex(i);
PublicControl.MultiSelectTreeViewItem subContainer = (PublicControl.MultiSelectTreeViewItem)container.ItemContainerGenerator.ContainerFromIndex(i);
//PublicControl.MultiSelectTreeViewItem subContainer = container.ItemContainerGenerator.ContainerFromItem(Items[i]) as PublicControl.MultiSelectTreeViewItem;
if (null == subContainer)
{
continue;
}
// Search the next level for the object.
PublicControl.MultiSelectTreeViewItem resultContainer = FindTreeViewItem(subContainer, item);
if (null != resultContainer)
{
return resultContainer;
}
}
return null;
}
PublicControl.MultiSelectTreeViewItem类是我扩展的TreeViewItem,可以根据情况改成自己扩展的类。
参考:http://www.cnblogs.com/muzizongheng/p/3166601.html
http://msdn.microsoft.com/zh-cn/library/vstudio/ff407130.aspx
- 关于TreeView ItemContainerGenerator.ContainerFromIndex 的到的值为null的处理
- dataGrid.ItemContainerGenerator.ContainerFromIndex(i)返回为空
- ibaitis 关于处理null值的方法
- 当在TreeView中添加新的节点时为什么e.Label的值为null?
- 关于oracle采用pivot函数列转行后一些列的值为null处理
- 一个SQL的bug:值为null的字段处理
- getLaunchIntentForPackage 获取到的为null原因
- getLaunchIntentForPackage 获取到的为null原因
- mybatis获取到的数据为NULL
- IOS开发中返回值为null时的处理
- SpringmvcJSON转换器MappingJackson2HttpMessageConverter设置对值为null的处理
- 关于json_encode中文为null的情况
- 关于getActionBar()为null的问题
- 关于TreeView 的使用
- 关于TreeView的问答
- 关于TreeView的问题
- 关于Android5.0 onActivityResult 的data为null 的处理方案
- MYSQL中关于NULL的处理
- ExtJs 3
- 嵌入式学习笔记1—S3C2440的时钟体系
- window下连接hadoop集群基础超详细版
- springmvc之表单重复提交问题
- 什么是堆和栈,它们在哪儿
- 关于TreeView ItemContainerGenerator.ContainerFromIndex 的到的值为null的处理
- Altium Designer之多图纸设计
- Merge Sorted Array
- 自制垃圾回收期
- 分享接近开关应用在机械臂时应该注意哪些事项
- 如何在 Windows XP 中配置权威时间服务器(microsoft.com复制留作备份)
- android应用开发详解(八)---------------常用组件之选项卡Tab的三种用法(续)
- informix esql使用POSIX多线程技术
- C++学习笔记(第四章 函数的应用及多文件组织 之二)