2010-02-25 8 views
6

ich einen MyGrid.Children UIElementCollection haben, würde Ich mag alle in den Rectangles finden, dass es Stile Stil Ein gesetzt haben und setzen sie zu StyleB.Da UIElementCollection, alle Elemente finden, die Stil Ein haben, und sie in WPF zu StyleB ändern

Ich möchte LINQ verwenden, wenn möglich, so kann ich eine böse verschachtelte Schleife vermeiden.

So etwas wie diese Pseudo-Code:

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

dann:

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

Kann ein LINQ-Guru mir helfen, meine LINQ-fu zu verbessern?

Antwort

15

war Ihr Code fast richtig, aber UIElements haben keine Style-Eigenschaft ... Sie können das Netz der Kinder nach ihrem Typ filtern:

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

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