Silverlight: Найдите все средства управления типа в расположении

Встраивание больших функций может сделать программу больше, приведя к большему количеству неудачных обращений в кэш и делая его медленнее.

Решение, когда функция является достаточно небольшой, что встраивание увеличит производительность, довольно хитро. Руководство по стилю C++ Google рекомендует только встроить функции 10 строк или меньше.

7
задан Otto Kanellis 1 August 2012 в 14:37
поделиться

1 ответ

Вот довольно наивный метод расширения: -

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;
     }
   }
}

У этого подхода есть недостаток, заключающийся в том, что он не предполагает никаких изменений происходят в членстве в дереве, пока оно выполняется. Это можно смягчить при использовании ToList ().

Теперь вы можете выполнять свои требования с помощью LINQ: -

 var qryAllButtons = myPanel.Descendents().OfType<Button>();
20
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: