我有一个绑定到项目列表的数据网格。我希望能够通过单击列标题对网格进行排序。网格排序后,我想通过拖动重新排序进一步组织它。我的问题是,只要有一种排序,我就无法拖动重新订购的商品(下拉后该列表会自动重新排序)。此外,只要编辑项目,网格就会重新排序。我已经尝试在排序事件中拦截这个,但是当“自动排序”时,事件并未被触发。仅当实际排序应用于视图时才会发生。
我尝试将已排序的视图复制到新列表,然后将itemsource设置为已排序的列表。这种方法的问题在于排序方向不会切换。
我被骗了几个小时,并决定我必须遗漏一些明显的东西。
答案 0 :(得分:1)
您需要实现与sort相关的所有内容。
您需要一个命令,用于绑定到sort方法的数据网格标头。和标题'绑定到当前列排序方向的文本
您需要一个已绑定的集合,该集合绑定到数据网格的项目源
您需要一个包含所有可点击列的枚举,以便在用户点击列时调用排序方法
您需要使用以下参数实现排序方法:bool sortDirection
和SortByColumnEnum column
。它会更新已排序的集合,因此会更改数据网格。
之后,您可以通过更改已排序集合中的索引来重新排序项目。