Учитывая UIElementCollection, найдите все элементы, которые имеют StyleA, и измените их на StyleB в WPF - PullRequest
6 голосов
/ 25 февраля 2010

У меня есть MyGrid.Children UIElementCollection, я хотел бы найти в нем все прямоугольники, в которых есть стили StyleA, и установить их в StyleB.

Я бы хотел использовать LINQ, если это возможно, чтобы избежать неприятного вложенного цикла.

Примерно так: псевдокод:

var Recs = from r in MyGrid.Children
                  where r.Style == StyleA && r.GetType() == typeof(Rectangle)
                  select r as Rectangle;

, то:

foreach(Rectangle r in Recs)
   r.Style = StyleB;

Может ли гуру LINQ помочь мне улучшить мой LINQ-fu?

1 Ответ

15 голосов
/ 26 февраля 2010

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

var recs = from r in MyGrid.Children.OfType<Rectangle>()
           where r.Style == StyleA
           select r;

foreach(Rectangle r in recs)
   r.Style = StyleB;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...