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

Kag*_*age 6 linq wpf 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;
Run Code Online (Sandbox Code Playgroud)

然后:

foreach(Rectangle r in Recs)
   r.Style = StyleB;
Run Code Online (Sandbox Code Playgroud)

LINQ大师可以帮助我改进我的LINQ-fu吗?

Tho*_*que 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;
Run Code Online (Sandbox Code Playgroud)