private void lvDeviceDataHeader_Click(object sender, RoutedEventArgs e) { try { 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; if (header == null) { header = "IsSelected"; } Sort(DeviceModel.GetPropertyName(header), direction); _lastHeaderClicked = headerClicked; _lastDirection = direction; } } } catch { } }