我一直在寻找这个,但我找不到任何能让我真正清除它的东西。
SortDescription集合与LiveSortingProperties之间的交互是什么?
LiveSorting是否依赖于SortDescriptions的存在来确定ASC / DESC顺序?实时排序属性是否只是关于要监视更改的属性的规范?
如果我想更改排序依据,是否要清除SortDescription集合,然后添加新的集合并“刷新”视图?
您是否需要LiveSorting来处理基础ObservableCollection的添加/删除,或者只是在集合中已有对象的某些属性发生变化的情况下?
答案 0 :(得分:2)
SortDescription集合与之间的交互是什么 LiveSortingProperties?
LiveSortingProperties
来自CollectionViewSource
并监听您的项目(必须实施INotifyPropertyChanged)以更改特定属性;如果它们被更改,则视图会自动更新。在添加IsLiveSortingRequested = true
之后设置LiveSortingProperties
非常重要,因此它会设置所需的一切(听众)。 LiveSortingProperties
独立于SortDescriptions
,SortDescriptions
执行排序,LiveSortingProperties
更新视图。
不胜感激:排序由ICollectionView完成,实时更新由ICollectionViewLiveShaping完成。 CollectionViewSource只是一个调用接口的方法/更改属性的代理。 ListCollectionView是ICollectionView
和ICollectionViewLiveShaping
的默认实现。
LiveSorting是否依赖于SortDescriptions的存在 确定ASC / DESC订单?实时排序属性只是一个 关于要注意哪些属性变化的规范?
正如你所说,LiveSortingProperites
只是观察者:你可以添加你没有排序的属性,当这些属性发生变化时视图会更新。
如果我想更改排序依据,请清除SortDescription吗? 收集然后添加新的和"刷新"观点?
最好的就是这样(微软也在这样做):
using (collectionViewSource.DeferRefresh())
{
collectionViewSource.SortDescriptions.Clear();
collectionViewSource.SortDescriptions.Add(new SortDescription("Foo"));
}
您是否需要LiveSorting来处理添加/删除 基础ObservableCollection或只是在某些属性的情况下 集合中已有的对象会发生变化吗?
删除/添加会自动处理,如果启用了属性的实时排序,则会对所有项目启用,包括新项目。