Hi,
i´d make a descending & ascending Sorting Order for a itemsSource ListView(code below). There is really strange behavior. Sometimes its sorted correct sometimes completly wrong. Sometimes the gridviewcolumnheader reacts by clicking, sometimes not. And if the column contains in one row numbers and in another - words than the sorting is fully shit... How can i offer a certain sorting ?
private void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e) {
GridViewColumnHeader headerClicked =
e.OriginalSource as GridViewColumnHeader;
ListSortDirection direction;
if(headerClicked != null) {
if(headerClicked.Role != GridViewColumnHeaderRole.Padding) {
if(headerClicked != _lastHeaderClicked) {
direction = ListSortDirection.Ascending;
}
else {
if(_lastDirection == ListSortDirection.Ascending) {
direction = ListSortDirection.Descending;
}
else {
direction = ListSortDirection.Ascending;
}
}
string header = headerClicked.Column.Header as string;
Sort(header, direction);
if(_lastHeaderClicked != null && _lastHeaderClicked != headerClicked) {
_lastHeaderClicked.Column.HeaderTemplate = null;
}
_lastHeaderClicked = headerClicked;
_lastDirection = direction;
}
}
}
private void Sort(string sortBy, ListSortDirection direction) {
ICollectionView dataView =
CollectionViewSource.GetDefaultView(listViewRedirectUrl.ItemsSource);
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}