【转】WPF查找子控件和父控件方法

2021-07-12 15:07

阅读:759

标签:code   pen   tty   empty   style   list   https   htm   ldo   

一、查找某种类型的子控件,并返回一个List集合
public List GetChildObjects(DependencyObject obj, Type typename) where T : FrameworkElement
        {
            DependencyObject child = null;
            List childList = new List();

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

if (child is T && (((T)child).GetType() == typename))
                {
                    childList.Add((T)child);
                }
                childList.AddRange(GetChildObjects(child,typename));
            }
return childList;
        }
调用:
List
二、通过名称查找子控件,并返回一个List集合
public List GetChildObjects(DependencyObject obj, string name) where T : FrameworkElement
        {
            DependencyObject child = null;
            List childList = new List();

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

if (child is T && (((T)child).GetType() == name |string.IsNullOrEmpty(name)))
                {
                    childList.Add((T)child);
                }
                childList.AddRange(GetChildObjects(child,name));
            }
return childList;
        }
调用:
List
三、通过名称查找某子控件:
public T GetChildObject(DependencyObject obj, string name) where T : FrameworkElement
{
    DependencyObject child = null;
    T grandChild = null;

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

if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))
        {
return (T)child;
        }
else
        {
            grandChild = GetChildObject(child, name);
if (grandChild != null)
return grandChild;
        }
    }
return null;
}
调用:
StackPanel sp = GetChildObject(this.LayoutRoot, "spDemoPanel");
四、通过名称查找父控件
public T GetParentObject(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;
}
调用:
Grid layoutGrid = VTHelper.GetParentObject(this.spDemoPanel, "LayoutRoot"); 

原文地址:https://www.cnblogs.com/udoless/p/3381411.html


【转】WPF查找子控件和父控件方法

标签:code   pen   tty   empty   style   list   https   htm   ldo   

原文地址:https://www.cnblogs.com/mqxs/p/9599375.html


评论


亲,登录后才可以留言!