C# GridView以错误的方式删除行
我有一个gridview,如果我以这种方式删除一行:C# GridView以错误的方式删除行,c#,wpf,gridview,row,C#,Wpf,Gridview,Row,我有一个gridview,如果我以这种方式删除一行: 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行的示例。已删除(
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)
第3排。第2行未显示。确实被删除了,但在我看来,第3行。没有正确地推到正确的位置。即使是更新网格也无济于事
编辑:当前行是一个列表
,我有一个列表
,它表示网格内容。我已经检查了填充行的列表是否始终具有与保存该行的行定义相同的索引
有什么建议吗?尝试查看currentRow和grdTable的确切结构。可能与这些不匹配的东西有关。在这里发布结构(我指的是那里的数据以及它的结构)将帮助那些试图帮助你的人 尝试查看currentRow和grdTable的确切结构。可能与这些不匹配的东西有关。在这里发布结构(我指的是那里的数据以及它的结构)将帮助那些试图帮助你的人 在我看来,您使用的是网格
控件,而不是“GridView”(我不知道有任何WPF控件使用该名称)。您使用行定义
对我来说就是这个意思
在网格中,每个控件所在的行由其网格.row
附加属性的值给出。网格的RowDefinitions
指定每行的高度
删除行定义
时,您只需调整网格中各行的高度
。删除行定义
不会影响网格中控件的行值
要完全删除该行,您需要:
删除行中的所有控件
将删除的控件下面的行中的所有控件向上移动,然后
删除行定义
您的代码似乎缺少步骤2
您的方法在删除最后一行的情况下有效,因为这样就没有控件需要重新排列。在删除最后第二行的情况下,它似乎也起作用。假设您有10行,编号从0到9,并且删除了第8行。现在有9行定义,数字从0到8。但是,最后一行中的控件的网格值仍设置为9,现在超出范围。WPF将最后一行中带有网格.Row
的所有控件置于范围之外,因此第9行中的控件显示在第8行中。如果将RowDefinition
添加回网格,您会发现第9行中的控件将出现在新的第9行中,在第8行中留下一个间隙
注:您不使用?的任何原因在我看来,您使用的是网格
控件,而不是“GridView”(我不知道有任何WPF控件具有该名称)。您使用行定义
对我来说就是这个意思
在网格中,每个控件所在的行由其网格.row
附加属性的值给出。网格的RowDefinitions
指定每行的高度
删除行定义
时,您只需调整网格中各行的高度
。删除行定义
不会影响网格中控件的行值
要完全删除该行,您需要:
删除行中的所有控件
将删除的控件下面的行中的所有控件向上移动,然后
删除行定义
您的代码似乎缺少步骤2
您的方法在删除最后一行的情况下有效,因为这样就没有控件需要重新排列。在删除最后第二行的情况下,它似乎也起作用。假设您有10行,编号从0到9,并且删除了第8行。现在有9行定义,数字从0到8。但是,最后一行中的控件的网格值仍设置为9,现在超出范围。WPF将最后一行中带有网格.Row
的所有控件置于范围之外,因此第9行中的控件显示在第8行中。如果将RowDefinition
添加回网格,您会发现第9行中的控件将出现在新的第9行中,在第8行中留下一个间隙
PS.您不使用网格的任何原因?WPF Toolkit()包括DataGrid控件,可与.NET 3.5一起使用。感谢您,很抱歉我混淆了舒尔it是网格而不是gridview。这个很好用!WPF Toolkit()包含一个DataGrid控件,可与.NET 3.5一起使用。感谢您,很抱歉我混淆了舒尔it是网格而不是gridview。这个很好用!