WPF DataGrid阻止自动重新排序已排序的视图

时间:2018-05-15 11:44:29

标签: c# wpf sorting wpfdatagrid

我有一个绑定到项目列表的数据网格。我希望能够通过单击列标题对网格进行排序。网格排序后,我想通过拖动重新排序进一步组织它。我的问题是,只要有一种排序,我就无法拖动重新订购的商品(下拉后该列表会自动重新排序)。此外,只要编辑项目,网格就会重新排序。我已经尝试在排序事件中拦截这个,但是当“自动排序”时,事件并未被触发。仅当实际排序应用于视图时才会发生。

我尝试将已排序的视图复制到新列表,然后将itemsource设置为已排序的列表。这种方法的问题在于排序方向不会切换。

我被骗了几个小时,并决定我必须遗漏一些明显的东西。

1 个答案:

答案 0 :(得分:1)

您需要实现与sort相关的所有内容。

  1. 您需要一个命令,用于绑定到sort方法的数据网格标头。和标题'绑定到当前列排序方向的文本

  2. 您需要一个已绑定的集合,该集合绑定到数据网格的项目源

  3. 您需要一个包含所有可点击列的枚举,以便在用户点击列时调用排序方法

  4. 您需要使用以下参数实现排序方法:bool sortDirectionSortByColumnEnum column。它会更新已排序的集合,因此会更改数据网格。

  5. 之后,您可以通过更改已排序集合中的索引来重新排序项目。