WPF DataGrid 防止排序视图的自动重新排序
WPF DataGrid prevent automatic reordering of sorted view
我有一个绑定到项目列表的数据网格。我希望能够通过单击 headers 列对网格进行排序。网格排序后,我想通过拖动重新排序来进一步组织它。我的问题是,每当有排序时,我都无法拖动 re-order 项目(列表在放置后自动 re-sorted )。同样,一旦编辑了一个项目,网格就会 re-sorted。我试过在排序事件中拦截它,但是当 'auto-sorting' 发生时,事件不会被触发,只有当实际排序应用于视图时。
我试过将排序视图复制到新列表,然后将项目源设置为排序列表。这种方法的问题是排序方向不会切换。
我已经闲逛了几个小时,并确定我一定遗漏了一些明显的东西。
您将需要实现与排序相关的所有内容。
您需要一个数据网格命令 headers 绑定到您的排序方法。 headers' 文本绑定到当前列排序的方向
您需要一个已排序的 collection,它绑定到数据网格的项目源
您需要一个包含所有可单击列的枚举,以便在用户单击列时调用排序方法
您需要使用以下参数实现排序方法:bool sortDirection
和 SortByColumnEnum column
。这会更新排序后的 collection,因此数据网格会发生变化。
之后,您可以通过更改已排序 collection 中的索引来重新排序项目。
我有一个绑定到项目列表的数据网格。我希望能够通过单击 headers 列对网格进行排序。网格排序后,我想通过拖动重新排序来进一步组织它。我的问题是,每当有排序时,我都无法拖动 re-order 项目(列表在放置后自动 re-sorted )。同样,一旦编辑了一个项目,网格就会 re-sorted。我试过在排序事件中拦截它,但是当 'auto-sorting' 发生时,事件不会被触发,只有当实际排序应用于视图时。
我试过将排序视图复制到新列表,然后将项目源设置为排序列表。这种方法的问题是排序方向不会切换。
我已经闲逛了几个小时,并确定我一定遗漏了一些明显的东西。
您将需要实现与排序相关的所有内容。
您需要一个数据网格命令 headers 绑定到您的排序方法。 headers' 文本绑定到当前列排序的方向
您需要一个已排序的 collection,它绑定到数据网格的项目源
您需要一个包含所有可单击列的枚举,以便在用户单击列时调用排序方法
您需要使用以下参数实现排序方法:
bool sortDirection
和SortByColumnEnum column
。这会更新排序后的 collection,因此数据网格会发生变化。
之后,您可以通过更改已排序 collection 中的索引来重新排序项目。