Browse Source

Add option to reset sort direction (by clicking on the same column three times)

pull/1167/head
Siegfried Pammer 7 years ago
parent
commit
22cff129f4
  1. 26
      ILSpy/Controls/SortableGridViewColumn.cs
  2. 2
      ILSpy/SearchPane.xaml

26
ILSpy/Controls/SortableGridViewColumn.cs

@ -145,10 +145,17 @@ namespace ICSharpCode.ILSpy.Controls
GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
if (grid != null && headerClicked != null && headerClicked.Role != GridViewColumnHeaderRole.Padding) {
if (headerClicked.Column == GetCurrentSortColumn(grid)) {
if (GetSortDirection(grid) == ColumnSortDirection.Ascending)
SetSortDirection(grid, ColumnSortDirection.Descending);
else
SetSortDirection(grid, ColumnSortDirection.Ascending);
switch (GetSortDirection(grid)) {
case ColumnSortDirection.None:
SetSortDirection(grid, ColumnSortDirection.Ascending);
break;
case ColumnSortDirection.Ascending:
SetSortDirection(grid, ColumnSortDirection.Descending);
break;
case ColumnSortDirection.Descending:
SetSortDirection(grid, ColumnSortDirection.None);
break;
}
} else {
SetSortDirection(grid, ColumnSortDirection.Ascending);
SetCurrentSortColumn(grid, headerClicked.Column as SortableGridViewColumn);
@ -161,9 +168,9 @@ namespace ICSharpCode.ILSpy.Controls
{
ColumnSortDirection currentDirection = GetSortDirection(grid);
SortableGridViewColumn column = GetCurrentSortColumn(grid);
ICollectionView dataView = CollectionViewSource.GetDefaultView(grid.ItemsSource);
if (column != null && GetSortMode(grid) == ListViewSortMode.Automatic && currentDirection != ColumnSortDirection.None) {
ICollectionView dataView = CollectionViewSource.GetDefaultView(grid.ItemsSource);
string sortBy = column.SortBy;
if (sortBy == null) {
Binding binding = column.DisplayMemberBinding as Binding;
@ -171,7 +178,7 @@ namespace ICSharpCode.ILSpy.Controls
sortBy = binding.Path.Path;
}
}
dataView.SortDescriptions.Clear();
if (sortBy != null) {
ListSortDirection direction;
@ -181,8 +188,11 @@ namespace ICSharpCode.ILSpy.Controls
direction = ListSortDirection.Ascending;
dataView.SortDescriptions.Add(new SortDescription(sortBy, direction));
}
dataView.Refresh();
} else {
dataView.SortDescriptions.Clear();
}
dataView.Refresh();
}
}

2
ILSpy/SearchPane.xaml

@ -39,7 +39,7 @@
<ListView Grid.Row="1" BorderThickness="0,0,0,0" HorizontalContentAlignment="Stretch" KeyDown="ListBox_KeyDown"
MouseDoubleClick="ListBox_MouseDoubleClick" Name="listBox" SelectionMode="Single" controls:SortableGridViewColumn.SortMode="Automatic" controls:GridViewColumnAutoSize.AutoWidth="50%;50%">
<ListView.View>
<GridView>
<GridView AllowsColumnReorder="False">
<controls:SortableGridViewColumn Header="Name" SortBy="Name">
<controls:SortableGridViewColumn.CellTemplate>
<DataTemplate>

Loading…
Cancel
Save