我正在将文本框分配给网格中的单元格,但想在分配之前确认对象是否已存在于单元格中。是否可以查询特定列的行,如果该列为空,则该列返回null?
我可以创建一个列表列表,该列表表示我在添加和删除对象时对其进行修改的网格,但这听起来效率很低。
我编写的示例代码:
TextBlock _text = new TextBlock()
{
Text = _cont,
Background = new SolidColorBrush(_colo.disciplinecolor)
}; TextBlockStyle(_text);
int index = SearchDate((DateTime)_dt);
Grid.SetRow(_text, 1); Grid.SetColumn(_text, index);
Maindispgrid.Children.Add(_text);
基本上,每次用户单击带有TextBlock
添加到已过时的列(由用户预先选择),并希望添加到该列的下一个可用行的按钮时,都会调用此代码块。我已经尝试过GetRow()
,但是UIElement进行了搜索,由于所有TextBlock
都是用相同的名称创建的,因此似乎没有用。
我可能会把所有这些都弄错了,因此,任何有关我需要阅读的内容的线索都将不胜感激。
基本上,最终结果应该可以这样工作:
TextBlock _text = new TextBlock()
{
Text = _cont,
Background = new SolidColorBrush(_colo.disciplinecolor)
}; TextBlockStyle(_text);
int index = SearchDate((DateTime)_dt);
//check for next available row at specific column index
Grid.SetRow(_text, nextAvailableRow); Grid.SetColumn(_text, index);
Maindispgrid.Children.Add(_text);
答案 0 :(得分:0)
您可以通过Maindispgrid.Children
遍历子级列表。对于每个孩子,检索分配的Row
和Column
值(如果有分配的话)。使用此信息来计算可用行。
IList<int[]> indices = new List<int[]>();
foreach (var child in Maindispgrid.Children)
{
int rowIndex = Grid.GetRow(child);
int columnIndex = Grid.GetColumn(child);
indices.Add(new int[] {rowIndex, columnIndex});
}
// work with the "indices" list