This question already has an answer here:
How to select a child from an UIElementCollection where a property = some value?

(1 个回答)


3年前关闭。




我正在将 Silverlight 应用程序转换为 WPF。下面的代码没有编译,但它在 Silverlight 中编译:

XAML:
<Grid x:Name="Table">
</Grid>

后面的代码:
foreach (var uiElement in Table.Children
            .Where(x => Grid.GetColumn((Border)x) == Table.ColumnDefinitions.Count() - 1))
{
   //do something
}

Where 它说



添加了 System.Linq 命名空间。

如果我将 UIElementCollection 转换为 IList<object> 则它可以工作,但我收到警告:



我究竟做错了什么?

最佳答案

在 Silverlight 中, UIElementCollection 实现 IEnumerable<T> ,但 WPF 中的 UIElementCollection 实现 IEnumerable ,而不是 IEnumerable<T> 。如果你想在这里使用 LINQ,你可以
使用 OfType<UIElement>() 作为选项:

foreach (var uiElement in Table.Children.OfType<UIElement>()
           .Where(x => Grid.GetColumn((Border)x) == Table.ColumnDefinitions.Count() - 1))
{
    //do something
}

关于c# - 在 UIElementCollection 上使用 Where 表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46647389/

10-13 02:02