How about this
//create a collection view for the datasoruce binded with grid
ICollectionView dataView = CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource);
//clear the existing sort order
dataView.SortDescriptions.Clear();
//create a new sort order for the sorting that is done lastly
dataView.SortDescriptions.Add(new SortDescription(strPropertyName, paramDirection));
//refresh the view which in turn refresh the grid
dataView.Refresh();
If you got any other problem ,you can turn to the following pages, hopefully, which can be of use.
mikestedman.blogspot.com/2012/07/wpf-datagrid-custom-column-sorting.html
e-iceblue.com/Knowledgebase/Spire.XLS/Program-Guide/How-to-Insert-Rows-in-Excel-via-C-/VB.NET.html
regards