Мне тоже нужно было это сделать, и я тщательно и тщательно изучил, может ли DataGrid сделать это.
На самом деле существует соответствующий метод для класса DataGridColumnHeader, а именно InvokeProcessSort, но он внутренний и не обнаружен где-либо еще в классах DataGrid.
Все, что мне удалось сделать, - это предварительно отсортировать данные непосредственно перед их привязкой. Я использую пользовательский сбор данных, который реализует ICollectionView, а также ObservableCollection <>, и это работает нормально - но это не оптимально, и груз работы, который не обязательно нужен.
Кроме того, предоставление предварительно отсортированной коллекции означает, что сетка не показывает маркер сортировки.
Я расскажу об этом как о проблеме с системой отслеживания ошибок DataGrid - это довольно серьезное упущение, которое было бы довольно легко исправить - MS просто нужно предоставить соответствующие методы для классов DataGridColumn и DataGrid.