2010-11-06 3 views

Répondre

1

Vous pouvez utiliser l'opérateur Union de LINQ pour tirer les deux Canvas.Children collections en une seule:

for (UIElement child in canvasOne.Children.Cast<UIElement>() 
            .Union 
         (canvasTwo.Children.Cast<UIElement>())) 
{ 
    ... 
} 

Notez les points suivants:

  • Le code ci ne crée pas une nouvelle, mutable collection que vous pouvez modifier; il ne fait que mettre en place un IEnumerable<UIElement> de sorte que vous pouvez parcourir en une fois les éléments des deux collections. Autrement dit, les deux collections existantes seront accessibles, pas un nouveau.

  • L'opérateur Cast<UIElement> est nécessaire parce que Canvas.Children ne met pas IEnumerable<T>, mais seulement IEnumerable.

  • Vous devez référencer l'assembly System.Core.dll dans votre projet et importer l'espace de noms System.Linq dans votre fichier de code pour que cela fonctionne.

Questions connexes