网格视图以错误的方式删除行
本文关键字:方式 删除行 错误 视图 网格 | 更新日期: 2023-09-27 18:33:23
我有一个网格视图,如果我以这种方式删除一行:
foreach(Label l in currentRow) // I have an internal list of the labels
{
grdTable.Children.Remove(l); // the cells are filled with labels
}
grdTable.RowDefinitions.Remove(index);
如果它是最后一行或倒数第二行,则在其他情况下它会失败,它会起作用。
删除第 2 行的示例(索引 1(http://www.pic-upload.de/view-14074618/Unbenannt.png.html
第 3 行未显示,第 2 行。真的被删除了,但在我看来,第 3 行。 未正确推到正确的位置。 即使更新网格也无济于事。
编辑:当前行是List<Label>
,我有一个代表网格内容的List<List<Label>>
。我已经检查过填充一行的List<Label>
始终与保存它的 RowDefinition 具有相同的索引。
有什么建议吗?
,您使用的是Grid
控件,而不是"GridView"(我不知道有任何具有该名称的WPF控件。 你对RowDefinitions
的使用向我暗示了这一点。
在Grid
中,每个控件所在的行由其Grid.Row
附加属性的值给出。 网格的RowDefinitions
指定每行的高度。
删除RowDefinition
时,您所做的只是调整Grid
内各行的高度。 删除RowDefinition
不会影响网格中控件Grid.Row
值。
要完全删除该行,您需要:
- 删除行中的所有控件,
- 将所有控件随机排列在已删除控件下方的行中,并且
- 删除
RowDefinition
。
您的代码似乎缺少步骤 2。
您的方法适用于删除最后一行的情况,因为这样就没有控件可以随机播放。 在您删除倒数第二行的情况下,它似乎也有效。假设您有 10 行,编号从 0 到 9,然后删除第 8 行。 现在有 9 个行定义,数字为 0 到 8。 但是,最后一行中的控件的Grid.Row
值仍设置为 9,这超出了范围。 WPF 将Grid.Row
超出范围的所有控件放在最后一行,因此第 9 行中的控件显示在第 8 行中。 如果将RowDefinition
添加回网格,您会发现第 9 行中的控件将出现在新的第 9 行中,从而在第 8 行中留下一个间隙。
附言。您不使用DataGrid
的任何原因?
尝试查看currentRow和grdTable的确切结构。可能与这些不匹配的内容有关。在这里发布结构(我的意思是那里的数据以及它的结构(将帮助那些试图帮助你的人。