Предполагая, что вы говорите о элементе управления WPG Toolkit DataGrid, вам нужно только установить свойство CanUserSortColumns в значение true, а затем установить свойство SortMemberPath каждого элемента DataGridColumn в DataGrid.
Что касается первоначальной сортировки коллекции, вы должны использовать CollectionViewSource и установить для нее сортировку, а затем назначить ее в качестве ItemsSource вашей DataGrid. Если вы делаете это в XAML, это будет так просто:
<Window.Resources>
<CollectionViewSource x:Key="MyItemsViewSource" Source="{Binding MyItems}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="MyPropertyName"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
<DataGrid ItemsSource="{StaticResource MyItemsViewSource}">
</DataGrid>
ПРИМЕЧАНИЕ: префикс пространства имен scm сопоставляется с System.ComponentModel, где находится класс SortDescription.
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
РЕДАКТИРОВАТЬ: Я думаю, что достаточное количество людей получили помощь из этого поста, что этот голосование с поправками следует включить в этот ответ:
Мне пришлось использовать это, чтобы заставить его работать:
<DataGrid ItemsSource="{Binding Source={StaticResource MyItemsViewSource}}">