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

WPF DataGrid prevent automatic reordering of sorted view

我有一个绑定到项目列表的数据网格。我希望能够通过单击 headers 列对网格进行排序。网格排序后,我想通过拖动重新排序来进一步组织它。我的问题是,每当有排序时,我都无法拖动 re-order 项目(列表在放置后自动 re-sorted )。同样,一旦编辑了一个项目,网格就会 re-sorted。我试过在排序事件中拦截它,但是当 'auto-sorting' 发生时,事件不会被触发,只有当实际排序应用于视图时。

我试过将排序视图复制到新列表,然后将项目源设置为排序列表。这种方法的问题是排序方向不会切换。

我已经闲逛了几个小时,并确定我一定遗漏了一些明显的东西。

您将需要实现与排序相关的所有内容。

  1. 您需要一个数据网格命令 headers 绑定到您的排序方法。 headers' 文本绑定到当前列排序的方向

  2. 您需要一个已排序的 collection,它绑定到数据网格的项目源

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

  4. 您需要使用以下参数实现排序方法:bool sortDirectionSortByColumnEnum column。这会更新排序后的 collection,因此数据网格会发生变化。

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