2010-04-29 51 views

回答

1

嗯,你可以使用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 <UIElement>,但我仍然覺得這很令人難以置信。

+0

謝謝。 我可以使用命名空間System.Linq或...添加嗎? – user302933 2010-04-29 20:56:02

+0

我有System.Linq,但仍然有與grid.children.Where 有什麼我想念請好嗎?謝謝 – user302933 2010-04-29 21:11:12

+0

System.Windows.Controls.UIElementCollection'不包含'Where'的定義並且沒有擴展方法'Where'接受'System.Windows.Controls.UIElementCollection'類型的第一個參數 – user302933 2010-04-29 21:13:27

相關問題