在Silverlight页面上有许多自定义控件的实例。我可以通过名称轻松获取自定义控件的实例:
MyCustomControl mcc = (MyCustomControl)this.FindName(namestring);
但是如何在此页面上获取此自定义控件的所有实例的列表?
答案 0 :(得分:2)
将此课程添加到您的项目中: -
public static class VisualTreeEnumeration
{
public static IEnumerable<DependencyObject> Descendents(this DependencyObject root)
{
int count = VisualTreeHelper.GetChildrenCount(root);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(root, i);
yield return child;
foreach (var descendent in Descendents(child))
yield return descendent;
}
}
}
现在您可以使用此代码: -
List<MyCustomControl> = this.Descendents().OfType<MyCustomControl>().ToList();
答案 1 :(得分:1)
尝试这样的事情
Enumerable.Range(0, VisualTreeHelper.GetChildrenCount(this))
.Select(i => VisualTreeHelper.GetChild(this, i))
.Where(c => c is MyUserControl);