CollectionViewSource.SortDescriptions 使用并行创建绑定项时不起作用

CollectionViewSource.SortDescriptions not work when binding items are created using Parallel

我正在使用 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 项无论在后台以何种顺序添加项都将被排序?

在您的代码演示中,您没有绑定到 CollectionViewSource,而是绑定到集合本身。尝试替换

<ItemsControl ItemsSource="{Binding ObsFoos, Mode=OneWay}" >

<ItemsControl ItemsSource="{Binding Source={StaticResource cvs}}" >

快速建议,如果您可以尝试在 CollectionViewSource 上添加 IsLiveFilteringRequested="True"。

如果有效请告诉我。