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

我有一个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吗?

最佳答案
你的代码几乎是正确的,但是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;

转载注明原文:给定UIElementCollection,找到具有StyleA的所有元素,并在WPF中将它们更改为StyleB - 代码日志