Учитывая UIElementCollection, найдите все элементы, которые имеют StyleA и изменяют их на StyleB в WPF

У меня есть MyGrid. Дети 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?

6
задан Dave Clemmer 15 August 2011 в 17:25
поделиться

1 ответ

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

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

foreach(Rectangle r in recs)
   r.Style = StyleB;
15
ответ дан 8 December 2019 в 16:01
поделиться
Другие вопросы по тегам:

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