Ну, вы могли бы сделать это с помощью запроса 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 .