Ich verwende VS2013, .net4.5, WPF Desktop-Anwendung.CollectionViewSource.SortDescriptions funktionieren nicht beim Binden von Elementen mit 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)));
Wenn ich .AsParallel()
entfernen, dann werden die Elemente sortiert, wenn hinzugefügt, die Elemente in Unordnung sind. Aber ich fühle mich ein bisschen seltsam. SortDescription Garantie die UI-Elemente sortiert werden, egal in welcher Reihenfolge die Elemente im Hintergrund hinzugefügt wurden?
Nachdem die 'ObsPasses'-Eigenschaft zugewiesen wurde, sind alle parallelen Operationen beendet und es bleibt eine' ObservableCollection' in einer unbekannten Reihenfolge übrig. Es gibt keine Möglichkeit, die Sortierungsfunktion 'CollectionViewSource' zu beeinflussen. Es muss etwas anderes sein, was du tust. Bitte geben Sie _full_ verifizierbaren Beispielcode an. –
@NovitchiS nach einigen Tests auf meinem Demo-Projekt fand ich ** SortDescription funktioniert nicht, egal AsParallel oder nicht **. Also muss ich irgendwo falsch liegen, aber ich kann es nicht herausfinden. [Demo] (https://github.com/LeiYangGH/SortParellel) –
Nur eine Idee - haben Sie versucht, CollectionView zum Aktualisieren zu zwingen, sobald die Sammlung mit View.Refresh gefüllt wurde? –