2010-02-25 15 views
6

'daki StyleB olarak değiştirin. Bir MyGrid.Children UIElementCollection var, StyleA'ya ayarlanmış stilleri olan tüm Dikdörtgenleri bulmak istiyorum ve set onları StyleB'ye.UIElementCollection verildiğinde, StyleA olan tüm öğeleri bulun ve bunları WPF

Mümkünse LINQ kullanmak istiyorum, böylece kötü bir yuvalanmış döngüden kurtulabilirim. Bu pseudocode gibi

şey: o zaman

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; 

bir LINQ gurusu benim LINQ-fu geliştirmek yardımcı olabilir misiniz?

cevap

15

Kodunuz neredeyse doğruydu, ama UIElements kendi türüne dayalı ... Sen ızgaranın çocukları filtre Stil özelliği yoktur:

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

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