1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public static List<T> GetChildObjects<T>(this DependencyObject obj, string name)
{
var retVal = new List<T>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
object c = VisualTreeHelper.GetChild(obj, i);
if (c.GetType().FullName == typeof(T).FullName && (String.IsNullOrEmpty(name) || ((FrameworkElement)c).Name == name))
{
retVal.Add((T)c);
}
var gc = ((DependencyObject)c).GetChildObjects<T>(name);
if (gc != null)
retVal.AddRange(gc);
}
return retVal;
}
public static T GetChildObject<T>(this DependencyObject obj, string name) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
object c = VisualTreeHelper.GetChild(obj, i);
if (c.GetType().FullName == typeof(T).FullName && (String.IsNullOrEmpty(name) || ((FrameworkElement)c).Name == name))
{
return (T)c;
}
object gc = ((DependencyObject)c).GetChildObject<T>(name);
if (gc != null)
return (T)gc;
}
return null;
} |