私はVS2013、.net4.5、WPFデスクトップアプリケーションを使用しています。バインディングアイテムがパラレルを使用して作成された場合、CollectionViewSource.SortDescriptionsが機能しません。
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 の項目がバックグラウンドで追加された順序に関係なくソートされますか?
'ObsPasses'プロパティが割り当てられた後、すべての並列処理が終了し、残っているものは未知の順序で' ObservableCollection'になります。 'CollectionViewSource'ソート機能に影響する方法はありません。それはあなたがやっている何か他のものでなければなりません。検証可能な_full_サンプルコードを提供してください。 –
@NovitchiS私のデモプロジェクトでいくつかのテストをしたところ、** SortDescriptionはAsParallelに関係なく**動作していませんでした。だから私はどこかで間違っているはずですが、私は見つけられません。 [Demo] –
ちょっと考えてみましょう.View.Refreshを使ってコレクションにデータが取り込まれると、CollectionViewを強制的に更新しようとしましたか? –