获取网格中的所有图像元素->;使用LINQ绘制画布?

获取网格中的所有图像元素->;使用LINQ绘制画布?,linq,image,canvas,grid,Linq,Image,Canvas,Grid,我在应用程序中使用了一个网格,其中包含一些画布元素,其中包含一些图像或文本块 e、 g: <Grid> <Canvas> <Image /> <Image /> </Canvas> <Canvas> <Textblock /> <Textblock /> </Canvas> </Grid> 现在我需要获取网格中的所有图像元素

我在应用程序中使用了一个网格,其中包含一些画布元素,其中包含一些图像或文本块

e、 g:

<Grid>
  <Canvas>
    <Image />
    <Image />
  </Canvas>
  <Canvas>
    <Textblock />
    <Textblock />
  </Canvas>
</Grid>

现在我需要获取网格中的所有图像元素。 目前我正在使用几个foreach循环和if语句来实现这一点。但我在问自己,是否有一种更优雅的方式使用LINQ,以便从网格中获取所有图像元素。但不幸的是,我的LINQ知识不是很好,所以我没有找到一种方法来让Canvas元素的子元素了解

也许有人有一个很好的解决办法

提前感谢并致以亲切的问候


Kornelis

我在网格中添加了一个名称,以便在链接中引用

<Grid Name="MyGrid">

然后这个linq返回画布内部的图像,这些图像是网格的子对象。我将其转换为对象,以便它可以查询子集合中的每个控件

IEnumerable<Image> results = (from c in MyGrid.Children.Cast<Object>()
                                where c.GetType() == typeof(Canvas)
                                select c).Cast<Canvas>()       
     .SelectMany(r => r.Children.Cast<object>()
     .Where(c => c.GetType() == typeof(Image))).Cast<Image>();
IEnumerable results=(来自MyGrid.Children.Cast()中的c)
其中c.GetType()==typeof(画布)
选择c.Cast()
.SelectMany(r=>r.Children.Cast()
其中(c=>c.GetType()==typeof(Image)).Cast();