Sortieren der Objekte einer gebunden WPF-ListBox
Und wieder einmal musste ich “recht” lange suchen um eine vermeidlich einfache Problematik zu klären. Diesmal wollte ich per Button die Einträge einer WPF-ListBox aufwärts bzw. abwärts sortieren.
Hier das Formular:

Bei den Items der ListBox handelt es sich um eine ObservableCollection, die ich über die Eigenschaft ItemsSource an die ListBox gebunden habe.
Im Eventhandler der Buttons habe ich folgenden Code hinterlegt:
lbxProjects.Items.SortDescriptions.Clear(); lbxProjects.Items.SortDescriptions.Add(new SortDescription("ProjectName", ListSortDirection.Ascending)); lbxProjects.Items.SortDescriptions.Add(new SortDescription("Count", ListSortDirection.Ascending));
bzw.
lbxProjects.Items.SortDescriptions.Clear(); lbxProjects.Items.SortDescriptions.Add(new SortDescription("ProjectName", ListSortDirection.Descending)); lbxProjects.Items.SortDescriptions.Add(new SortDescription("Count", ListSortDirection.Descending));
Über die Eigenschaft “SortDescriptions” kann man sehr komfortabel festlegen, wie die Liste sortiert werden soll. In meinem Beispiel sortiere ich zuerst nach dem Projektnamen und dann nach der Anzahl, wodurch sich folgendes Bild ergibt:
Hier der Source für Visual Studio 2008: Download

