Silverlight获取子控件和父控件方法
来源:互联网 发布:数据点阵笔考试 编辑:程序博客网 时间:2024/06/05 04:42
public class VTHelper
{
// 在实际项目中,为满足实际开发需求,对VisualTreeHelper的方法重新进行封装是非常必要的。
///首先要介绍的Hleper方法是GetParentObject方法,获取父控件方法。该方法将根据当前控件,遍历查找其父控件是否存在。参数1是表示当前子控件名,参数2是要查询父控件名;使用VisualTreeHelper.GetParent方法获取当前父控件。
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;
}
//另外一个Helper方法是GetChildObject,获取子控件方法。该方法将根据当前控件,遍历查找其子控件是否存在。参数1是表示当前父控件名,参数2是要查询子控件名;
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;
}
/// <summary>
/// 找出符合条件的一个子对象.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public T GetChildObjectByType<T>(DependencyObject obj) 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 )
{
return (T)child;
}
else
{
grandChild = GetChildObjectByType<T>(child);
if (grandChild != null)
return grandChild;
}
}
return null;
}
//最后介绍一个Helper方法是GetChildObjects方法,该方法将把所有子控件作为List集合返回到客户端。其中第一个参数是父控件参数,而第二个参数是特定子控件名称,如果需要遍历全部子控件,第二个参数留空即可。
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;
}
}
转载自 http://kevinfan.blog.51cto.com/1037293/340244
- Silverlight获取子控件和父控件方法
- Silverlight获取子控件和父控件方法
- Silverlight获取子控件和父控件方法
- WPF查找子控件和父控件方法
- WPF查找子控件和父控件方法
- javascript 获取子控件的方法
- 获取 ViewPager 内部子控件的方法
- iOS获取一个控件的子控件的方法
- Silverlight获取控件绝对位置
- WPF 查找子控件和父控件
- 事件拦截,父控件和子控件
- ListView获取子控件
- 获取所有子控件
- WPF获取想对于父控件的子控件坐标
- 获取子控件在父控件中下标
- WPF获取子、父窗体控件
- Silverlight 中得到控件模板中的子控件
- 安卓之onmeasure方法 获取子控件
- IE下IFrame引用跨域站点页面时,Session失效问题解决
- Objective C++介绍
- Django学习笔记
- base64的解码
- JasperReports+iReport在eclipse中的使用
- Silverlight获取子控件和父控件方法
- hdu 2071
- ios 相册 多选
- C++几种简单排序及类的操作(冒泡,选择,插入)
- 坐标上升算法(Coordinate Ascent)及C++编程实现
- 中文解码
- asp.net 连接MySql两种方法
- cf 79B
- 单选框获取值