Я использую VS2013, .net4.5, настольное приложение WPF.CollectionViewSource.SortDescriptions не работает, когда элементы привязки создаются с использованием Parallel
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()
, то элементы сортируются, если добавлены, элементы находятся в беспорядке. Но я чувствую себя немного странно. Не сортируетОписание гарантия элементы пользовательского интерфейса, которые нужно сортировать независимо от того, в каком порядке элементы были добавлены в фоновом режиме?
После того, как свойство 'ObsPasses' будет назначено, все параллельные операции закончены, а оставшееся -' ObservableCollection' в неизвестном порядке. Невозможно повлиять на функцию сортировки CollectionViewSource. Это должно быть что-то еще, что вы делаете. Просьба указать код проверки подлинности _full_. –
@NovitchiS после некоторого тестирования моего демонстрационного проекта, я нашел ** SortDescription не работает независимо от AsParallel или нет **. Поэтому я должен быть чем-то не прав, но я не могу узнать. [Demo] (https://github.com/LeiYangGH/SortParellel) –
Просто идея - вы пытались заставить CollectionView обновиться после того, как коллекция заселена с помощью View.Refresh? –