One, find some type of child control and return a list collection
Public list<t> getchildobjects<t> (DependencyObject obj, Type TypeName) 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). GetType () = = typename))
{
Childlist.add ((T) child);
}
Childlist.addrange (getchildobjects<t> (child,typename));
}
return childlist;
}
Call:
list<button> listbuttons = getchildobjects<button> (Parentpanel, typeof (Button));
Second, find the child control by name and return a list collection
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). GetType () = = Name |string. IsNullOrEmpty (name)))
{
Childlist.add ((T) child);
}
Childlist.addrange (getchildobjects<t> (child,name));
}
return childlist;
}
Call:
list<button> listbuttons = getchildobjects<button> (Parentpanel, "Button1");
Third, find a child control by name:
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;
}
}
Returnnull;
}
Call:
StackPanel SP = getchildobject<stackpanel> (this. LayoutRoot, "Spdemopanel");
Iv. finding the parent control by name
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);
}
Returnnull;
}
Call:
Grid Layoutgrid = vthelper.getparentobject<grid> (This.spdemopanel, "LayoutRoot");
Find child controls and parent control methods