修改WPF排序ListView中的项目不会更改该项目的排序位置

Fai*_*sal 5 .net wpf xaml

我有一个可排序的列表视图,它充满了实时数据.排序工作完美,但在添加到集合后修改项目时会出现真正的问题.无论排序顺序如何,修改项目的位置都不会改变.

我用google搜索它但找不到更好的解决方案,使我的listview成为一个完美的排序列表视图.

解决方案?

小智 4

我假设您正在遵循与此 MSDN 示例类似的方法。如果是这样,则根据集合视图的 SortDescriptions 进行排序。只要源集合是可观察的,在集合中添加或删除项目时就应该遵守排序顺序。

当项目添加到集合后被修改时,真正的问题就会出现。在这种情况下,集合不会自动重新排序。

我在“E”适用于可编辑集合(在我的ItemsControl A 到 Z系列中)中详细解释了该问题。我还提出了一些提供不同性能级别的解决方法。最激烈的是通过调用 CollectionView 上的 Refresh() 来强制对整个集合进行重新排序。如果可能的话,我会避免这种情况并使用更好的选项,例如在项目上实现 IEditableObject 并在项目的属性发生更改时发出 Edit() ,然后发出 Commit() 。