排序后在数据网格中保留所选行

本文关键字:保留 网格 数据 数据网 排序 | 更新日期: 2023-09-27 18:20:07

我使用的是一个WPF数据网格,其中可以选择多个记录&可以对其进行排序(通过单击列标题)。

我希望能够在排序后保留所选行

请注意,我可以保留所选的行,当要保留的行超过1时就会出现问题。

例如:我选择索引为2&3,然后在特定列上排序。在排序功能之后,我希望能够保留所选择的行(旧标记2,3)&新指数-4.5。因此,在排序之后,第4&必须选择第5行。

我的数据网格的项目源是ListCollectionView类型,当需要排序时,我会向其添加排序描述。

我尝试过的事情:

已尝试设置SelectedItems属性。不起作用,因为它是只读属性。

尝试设置DataGridRow的IsSelected属性,但不起作用。虽然我可以看到所选行的IsSelected属性设置为true,但在屏幕上我没有看到突出显示的记录。

这个可能很模糊,但我多次设置了所选索引,但这只会突出显示最后一个所选索引的记录。

每次排序后,最后一个选定的记录都会高亮显示。有没有一种方法可以保留所选的行?

编辑:

我现在可以使用datagrid.SelectedItems.Add(dataGridRow)或在数据网格行上设置IsSelected属性来设置数据网格的选定项。

问题是,尽管所选项目存在,但它们不会在屏幕上突出显示。如何突出显示行?

例如:如果选择了3条记录&排序前高亮显示,排序后,所有记录都被选中(在代码中放入断点并选中),但只有一条记录高亮显示。

排序后在数据网格中保留所选行

可以通过将行的IsSelected属性设置为true来设置数据网格的选定项。

或者使用SelectedItems.Add()方法添加所选项目。

我也在做同样的事情,但仍然看不到选定的项目,因为代码中还有另一个地方正在修改选定的项目。

对上述解决方案进行了测试;作品