【发布时间】:2010-05-03 04:29:39
【问题描述】:
如何在窗口控件Grid(不是gridview或datagrid)中的指定行和列添加控件?在 C# 中
假设我们知道控件所在的行列,如何通过网格行列获取控件?
谢谢
【问题讨论】:
标签: c# wpf wpf-controls
如何在窗口控件Grid(不是gridview或datagrid)中的指定行和列添加控件?在 C# 中
假设我们知道控件所在的行列,如何通过网格行列获取控件?
谢谢
【问题讨论】:
标签: c# wpf wpf-controls
嗯,你可以很容易地使用 LINQ 查询来做到这一点:
public IEnumerable<UIElement> GetElementsAtPosition(Grid grid, int row, int column)
{
return grid.Children.OfType<UIElement>().Where(c => Grid.GetRow(c) == row && Grid.GetColumn(c) == column);
}
这需要返回一个IEnumerable,因为在给定的行和列交叉点可以有多个控件。如果您正在执行行/列跨越,这也不是很可靠(它不会捕捉到元素从不同的行或列开始并跨越到它的情况)。
编辑感谢@wpfwannabe 提供了完成这项工作所需的正确 LINQ 运算符。 UIElementCollection 没有实现 IEnumerable
【讨论】:
grid.Children.OfType<UIElement>.Where(c => Grid.GetRow(c) == row && Grid.GetColumn(c) == column)。