【发布时间】:2016-06-29 09:17:23
【问题描述】:
我正在使用 VS2013、.net4.5、WPF 桌面应用程序。
Xaml:
<CollectionViewSource x:Key="cvs" Source="{Binding ObsPasses, Mode=OneWay}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="StartDate"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
cs:
this.ObsPasses = new ObservableCollection<PassViewModel>(
Passes.AsParallel().Select(x => new PassViewModel(x)));
如果我删除.AsParallel(),则项目已排序,如果添加,则项目无序。
但我觉得有点奇怪。 SortDescription 是否保证无论项目在后台添加的顺序如何,都可以对 UI 项目进行排序?
【问题讨论】:
-
在分配
ObsPasses属性后,所有并行操作都已完成,剩下的就是一个未知顺序的ObservableCollection。它不会影响CollectionViewSource排序功能。这一定是你正在做的其他事情。请提供完整可验证的示例代码。 -
@NovitchiS 在对我的演示项目进行了一些测试后,我发现 SortDescription 不起作用,无论 AsParallel 与否。所以我一定是在某个地方错了,但我找不到。 Demo
-
只是一个想法 - 您是否尝试在通过 View.Refresh 填充集合后强制 CollectionView 刷新?
标签: c# wpf task-parallel-library task collectionviewsource