2010-02-25 5 views
6

Tôi đã có một MyGrid.Children UIElementCollection, tôi muốn tìm tất cả các hình chữ nhật trong đó có kiểu đặt thành StyleA và đặt chúng đến StyleB.Với UIElementCollection, tìm tất cả các phần tử có StyleA và thay đổi chúng thành StyleB trong WPF

Tôi muốn sử dụng LINQ nếu có thể, vì vậy tôi có thể tránh vòng lặp lồng nhau khó chịu.

Something như giả này:

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

thì:

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

một guru LINQ có thể giúp tôi cải thiện của tôi LINQ-fu?

Trả lời

15

Mã của bạn là gần như chính xác, nhưng UIElements không có một tài sản Phong cách ... Bạn có thể lọc trẻ em của lưới điện dựa trên loại của họ:

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

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