treeviewhelper用法,找child的UIElement

List<InfoWindow> infowindows = treeviewhelper.GetChildObjects<InfoWindow>(gridMap, "");

public class TreeViewHelper
{
public T GetParentObject<T>(DependencyObject obj, string name) where T : FrameworkElement
{
DependencyObject parent = VisualTreeHelper.GetParent(obj);

while (parent != null)
{
if (parent is T && (((T)parent).Name == name | string.IsNullOrEmpty(name)))
{
return (T)parent;
}

parent = VisualTreeHelper.GetParent(parent);
}

return null;
}

public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement
{
DependencyObject child = null;
T grandChild = null;

for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
{
child = VisualTreeHelper.GetChild(obj, i);

if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))
{
return (T)child;
}
else
{
grandChild = GetChildObject<T>(child, name);
if (grandChild != null)
return grandChild;
}
}

return null;

}

public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement
{
DependencyObject child = null;
List<T> childList = new List<T>();

for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
{
child = VisualTreeHelper.GetChild(obj, i);

if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name)))
{
childList.Add((T)child);
}

childList.AddRange(GetChildObjects<T>(child, ""));
}

return childList;

}

}

时间: 2024-10-15 13:36:38

treeviewhelper用法,找child的UIElement的相关文章

mysql数据库(三):查询的其他用法

一. 查询—IN的用法 语法:select ... from 表名 where 字段 a in (值b, 值c, 值d...) 等价于 select ... from 表名 where 字段a=值b or 字段a=值c or 字段a=值d; 例如,查询学生表里学生编号为1401001或者1401002或者1401003的学生信息 select * from student where id=1401001 or id=1401002 or id=1401003; select * from st

深入javascript面向对象,js的原型链、继承

进阶面向对象----------------------– 在JS源码中,系统对象也是基于原型的程序, 尽量不要去添加和修改系统对象的方法 包装对象----------------------– 基本类型都有自己对应的包装对象 比如String Number Boolean 基本类型会找到对应的包装对象类型,然后包装对象把所有的属性方法给了 基本类型,然后包装对象消失 例如 var str = 'abc'; str.num = 10; //创建一个包装对象,给包装对象加num属性,然后立刻消失.

dom操作

1 1.滚动条位置查询 2 document.documentElement.scrollLeft; 3 document.documentElement.scrollTop; 4 5 2.document,element,text是node的子类 6 节点树的根部是document 7 8 document.getElementById("")//id值是唯一的 9 10 document.getElementByName("") 11 //根据name属性选取元

javascript --- 只继承于原型

正如上次所述,,出于效率考虑,我们应该尽可能的将一些可重用的属性和方法添加到原型中去. 如果养成了这个好习惯,我们仅仅依靠原型就能顺利的完成继承关系的构建了. 毕竟采用new her()方法将her的属性设为对象自身属性,这样的代码是不可重用的,我们可以利用下述方法提高一些效率.这节的内容上文已经提到,毕竟温故知新也是很重要的. 1. 不要单独为继承关系创建新对象. 2. 尽量减少运行时的方式方式搜索(例如toString()); 下面就是优化后的代码,修改的地方加粗显示(可能会与上文不太一样,

Oracle取月份-不带前面的0

出处:http://www.2cto.com/database/201208/145611.html 今天碰到只要取月份和天数,如果月份前面有0要去掉0.比如说2010-01-08 ,需要的结果是1-8. 引出了一系列的sql语句 第一: 利用to_number的函数转换自动截0 select to_number(to_char(sysdate,'mm'))||'-'||to_number(to_char(sysdate,'dd')) from dual; 第二: 利用ltrim函数加固定参数去

winform实现QQ聊天气泡200行代码

c# winform实现QQ聊天气泡界面,原理非常简单,通过webKitBrowser(第三方浏览器控件,因为自带的兼容性差)加载html代码实现,聊天界面是一个纯HTML的代码,与QQ的聊天界面可以比拟,很不错,因为是html所以扩展性非常大,点击发送按钮可以将文本框的文字加入聊天里,项目开发过程遇到几个难点都解决了,如: 1.怎么在聊天新消息插入后将滚动条滚动到最底部,这里我网上搜索了webKitBrowser的滚动条用法找不到,所以这里我用了锚点链接通过每次加载html用js跳到锚点实现滚

安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解

1.设备对象 引入uiautomator,获取设备对象<所谓设备对象可理解为:Android模拟器或者真机> 语法:from uiautomator import device as d d 即为设备对象 1.1.获取设备信息 语法:d.info 返回值: { u'displayRotation': 0, u'displaySizeDpY': 640, u'displaySizeDpX': 360, u'currentPackageName': u'com.android.launcher',

sql要点

oracle 并操作 union  自动去除重复    如果想保留重复,需要使用union all 交操作intersect  自动去除重复    如果想保留重复,需要使用intersect all 差操作 except 自动去除重复    如果想保留重复,需要使用except all 聚集函数 平均值:avg 最小值:min 最大值:max 总和:sum 计数:count sum和avg必须是数字 使用group by可以将其作用在一组元组集上. 有时候,对分组限定条件比对元组限定有用,使用h

使用shell脚本往文件中加一列

上午大学同学问了我一个脚本的问题,大概需求就是看到所有端口的开启情况,还要知道每个端口的应用程序路径,而且要和之前的数据齐平,就是再加一列数据.我腚眼一看,非常容易嘛,但由于当时忙,所以就说中午给他发过去,但到自己写的时候,各种问题啊,awk的用法找了又找,不得不说awk非常伟大,脚本如下: show_path.sh #!/bin/bash pid=`netstat -lntup |awk '{if (NR>2){print $7}}'|awk -F '/' '{print $1}'` for