有没有人有一个很好的方法来找到同一类型的对象中的所有控件?这是我的方案,我有一个选项卡控件,在每个选项卡控件中都存在一个用户控件(所有这些控件都匹配相同的基类型,例如MyBaseClassControl)。我希望能够找到用户控件而不必使用control.FindName(“controlName”)方法,而是希望按类型(例如基类)获得控件的句柄。 VisualTreeHelper类似乎对我没有任何作用,因为它只返回本机Silverlight对象。
答案 0 :(得分:0)
鉴于此:
public static IEnumerable<DependencyObject> AllChildren(this DependencyObject root)
{
var children = root.DirectChildren().ToList();
return children.Union(children.SelectMany(o => o.AllChildren()));
}
public static IEnumerable<DependencyObject> DirectChildren(this DependencyObject parent)
{
var childCount = VisualTreeHelper.GetChildrenCount(parent);
for (var i = 0; i < childCount; i++)
yield return System.Windows.Media.VisualTreeHelper.GetChild(parent, i);
}
你可以这样做:
myObj.AllChildren().OfType<MyBaseClassControl>();