void Header_Click(object sender, RoutedEventArgs e) { GridViewColumnHeader clickHeader = e.OriginalSource as GridViewColumnHeader; if (clickHeader.IsNull() || clickHeader.Column.IsNull() || ColumnWidthHelper.GetSortPropertyName(clickHeader.Column).IsNullOrEmpty()) { return; } ListSortDirection direction = ListSortDirection.Ascending; if (clickHeader != lastHeader) { direction = ListSortDirection.Descending; } else { if (lastDirection == ListSortDirection.Ascending) { direction = ListSortDirection.Descending; } else { direction = ListSortDirection.Ascending; } } SetSortOrder(clickHeader, direction); }
private void SetSortOrder(GridViewColumnHeader clickHeader, ListSortDirection direction) { if (lastHeader.IsNull()) { lastHeader = ColNameHeader; } if (lastHeader.IsNull()) { return; } string propName = ColumnWidthHelper.GetSortPropertyName(clickHeader.Column); if (propName.IsNullOrEmpty() || this.ViewModel.IsNull()) { return; } ViewModel.SetSortOrder(propName, direction); lastHeader.ContentTemplate = NormalHeaderDataTemplate; switch (direction) { case ListSortDirection.Ascending: clickHeader.ContentTemplate = AscHeaderDataTemplate; break; case ListSortDirection.Descending: clickHeader.ContentTemplate = DescHeaderDataTemplate; break; default: clickHeader.ContentTemplate = NormalHeaderDataTemplate; break; } lastHeader = clickHeader; lastDirection = direction; }