Wpf 如何从两个画布的控件创建集合

Wpf 如何从两个画布的控件创建集合,wpf,Wpf,我已经创建了一个wpf应用程序,有两个画布我想将两个cancas的控件存储到一个集合中,这样我就可以在没有两个循环的情况下处理它们。实现这一点的最佳方法是什么。您可以使用LINQ的Union操作符将两个画布。子项集合合并为一个: for (UIElement child in canvasOne.Children.Cast<UIElement>() .Union (

我已经创建了一个wpf应用程序,有两个画布我想将两个cancas的控件存储到一个集合中,这样我就可以在没有两个循环的情况下处理它们。实现这一点的最佳方法是什么。

您可以使用LINQ的
Union
操作符将两个
画布。子项
集合合并为一个:

for (UIElement child in canvasOne.Children.Cast<UIElement>()
                                     .Union
                       (canvasTwo.Children.Cast<UIElement>()))
{
    ...
}
for(canvasOne.Children.Cast()中的UIElement子元素)
.工会
(canvasTwo.Children.Cast())
{
...
}
注意以下几点:

  • 显示的代码实际上并没有创建一个可以修改的新的可变集合;它只是设置了一个
    IEnumerable
    ,这样您就可以一次遍历两个集合的元素。也就是说,将访问两个现有集合,而不是新集合

  • Cast
    运算符是必需的,因为
    Canvas.Children
    不实现
    IEnumerable
    ,而只实现
    IEnumerable

  • 您需要在项目中引用
    System.Core.dll
    程序集,并在代码文件中导入
    System.Linq
    命名空间,才能使其正常工作