Как получить список всех экземпляров объекта на странице - PullRequest
0 голосов
/ 23 ноября 2010

На странице Silverlight есть несколько экземпляров пользовательского элемента управления. Я легко могу получить экземпляр пользовательского элемента управления по его имени:

MyCustomControl mcc = (MyCustomControl)this.FindName(namestring);

Но как я могу получить список всех экземпляров этого пользовательского элемента управления на этой странице?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Добавьте этот класс в свой проект: -

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 голос
/ 23 ноября 2010

Попробуйте что-то вроде этого

Enumerable.Range(0, VisualTreeHelper.GetChildrenCount(this))
    .Select(i => VisualTreeHelper.GetChild(this, i))
    .Where(c => c is MyUserControl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...