如何通过其位置(行和列)找到ui元素?
答案 0 :(得分:1)
UIElement FindByCell1(Grid g, int row, int col)
{
var childs = g.Children.Cast<UIElement>()
return childs.Where(x => Grid.GetRow(x) == row && Grid.GetColumn(x) == col).FirstOrDefault();
}
如果同一个单元格中可能存在某些元素:
IEnumerable<UIElement> FindByCell(Grid g, int row, int col)
{
var childs = g.Children.Cast<UIElement>()
return childs.Where(x => Grid.GetRow(x) == row && Grid.GetColumn(x) == col);
}
在你的情况下,这种方式 - 直接使用UI中的元素 - 非常不推荐,与MVVM极其相反。
答案 1 :(得分:0)
好答案。我的实现(在代码中生成Buttons数组,然后想要其索引数组):
Button[,] Buttons = new Button[8, endTimePlus1 - startTime];
var buttons = controlGrid.Children.Cast<Button>();
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < endTimePlus1 - startTime; j++)
{
Buttons[i,j] = buttons.Where(x => Grid.GetRow(x) == j && Grid.GetColumn(x) == i).FirstOrDefault();
}
}