1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
{
DependencyObject o = VisualTreeHelper.GetParent((sender as GridViewColumnHeader));
while (o.GetType() != typeof(ListView))
o = VisualTreeHelper.GetParent(o);
Sort((sender as GridViewColumnHeader).Tag.ToString(), _direction, o as ListView);
if (_direction == ListSortDirection.Ascending)
_direction = ListSortDirection.Descending;
else
_direction = ListSortDirection.Ascending;
}
private void Sort(string sortBy, ListSortDirection direction, ListView lv)
{
if (lv.ItemsSource != null && lv.Items.Count > 0)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(lv.ItemsSource);
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
// plante sur cette ligne :(
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
}
// Note : je stocke le nom de l'attribut à trier dans le tag de GridViewColumnHeader... |
Partager