2010-11-05 6 views

Répondre

1

LINQ est utilisé pour interroger des collections plutôt que de causer des effets secondaires. Selon MSDN Silverlight ne supporte pas la méthode de RemoveAllList<T> mais ne supporte les méthodes Remove et RemoveAt, sinon vous auriez pu écrire: GridBoard.Children.ToList().RemoveAll(el => el is Ellipse);

Vous pouvez utiliser LINQ comme suit:

var query = GridBoard.Children.OfType<Ellipse>().ToList(); 
foreach (var e in query) 
{ 
    GridBoard.Children.Remove(e); 
} 

Alternativement, vous pouvez parcourir votre liste en sens inverse et utiliser RemoveAt qui donnerait une meilleure performance puis en utilisant Remove:

for (int i = GridBoard.Children.Count - 1; i >= 0; i--) 
{ 
    if (GridBoard.Children[i] is Ellipse) 
     GridBoard.Children.RemoveAt(i); 
} 

Donc ce n'est pas très différent de ce que vous aviez. Peut-être le support RemoveAll fera-t-il place aux futures versions de Silverlight et ce serait le meilleur choix.

+0

merci beaucoup! – TechTravelThink

Questions connexes