-1

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

1 回答 1

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
于 2019-05-19T16:40:07.540 回答