我在我的应用程序中使用了一个网格,其中包含一些包含一些图像或文本块的画布元素。
例如:
<Grid>
<Canvas>
<Image />
<Image />
</Canvas>
<Canvas>
<Textblock />
<Textblock />
</Canvas>
</Grid>
现在我需要获取网格中的所有图像元素。 目前我正在使用几个foreach循环和if语句来实现这个目标。但我问自己是否使用LINQ没有更优雅的方式,所以从网格中获取所有图像元素。但不幸的是,我的LINQ Knowledges并不是那么好,所以我没有找到一种方法来获得画布元素之子。
也许某人有一个很好的解决方案。
提前致谢并致以亲切的问候
Kornelis
答案 0 :(得分:1)
我在网格中添加了一个名称,以便在链接中引用
<Grid Name="MyGrid">
然后这个linq返回作为网格子节点的画布内的图像。我将其转换为对象,以便它可以查询Children集合中的每个控件。
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>();