有没有一种方法来检查网格单元格,而不是数据网格单元格是否包含对象

时间:2019-05-18 19:53:07

标签: c# wpfgrid

我正在将文本框分配给网格中的单元格,但想在分配之前确认对象是否已存在于单元格中。是否可以查询特定列的行,如果该列为空,则该列返回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);

1 个答案:

答案 0 :(得分:0)

您可以通过Maindispgrid.Children遍历子级列表。对于每个孩子,检索分配的RowColumn值(如果有分配的话)。使用此信息来计算可用行。

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