给定UIElementCollection,找到具有Style的所有元素,并将它们更改为WPF中的Style

时间:2010-02-25 20:34:41

标签: wpf linq styles uielementcollection

我有一个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 个答案:

答案 0 :(得分:15)

您的代码几乎是正确的,但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;