2010-02-25 6 views
6

Tengo un MyGrid.Children UIElementCollection, me gustaría encontrar todos los rectángulos que tienen estilos establecidos en StyleA, y establecer ellos a StyleB.Dado UIElementCollection, encuentre todos los elementos que tengan StyleA, y cámbielos a StyleB en WPF

Me gustaría usar LINQ si es posible, así puedo evitar un asqueroso bucle anidado.

Algo como esto pseudocódigo:

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

a continuación:

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

¿Puede un gurú LINQ ayudará a mejorar mi LINQ-fu?

Respuesta

15

Su código era casi correcto, pero UiElements no tienen una propiedad de estilo ... Puede filtrar los niños de la cuadrícula en base a su tipo:

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

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