У меня есть Инструментарий WPF DataGrid с одним DataGridTemplateColumn. Я указал в атрибуте сетки, что хочу, чтобы все столбцы были поддающимися сортировке, но DataGridTemplateColumn не позволит его. Все другие столбцы действительно позволяют сортировать. Я даже попробовал явно установку CanUserSort к истинному для того столбца, но никакую удачу. Даже возможно отсортировать шаблонный столбец? Я предоставил пользовательскому сортировщику, который работает на все столбцы, но заголовок не позволит щелчок вида.
<Controls:DataGrid ItemsSource="{Binding Events}" AutoGenerateColumns="False"
CanUserSortColumns="True"
CanUserReorderColumns="False"
Sorting="DataGrid_Sorting"
x:Name="EventsGrid">
<Controls:DataGrid.Columns>
<Controls:DataGridTemplateColumn Header="Type" Width="42" CanUserResize="False">
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding EventTypeImage, Mode=OneWay}" HorizontalAlignment="Center" Width="16"/>
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGridTemplateColumn>
<Controls:DataGridTextColumn Header="Source"
Binding="{Binding Source, Mode=OneWay}" />
<Controls:DataGridTextColumn Header="Details" MinWidth="175"
Binding="{Binding Details, Mode=OneWay}" />
<Controls:DataGridTextColumn Header="Timestamp" MinWidth="175"
Binding="{Binding Timestamp, Mode=OneWay}"
IsReadOnly="True"/>
</Controls:DataGrid.Columns>
</Controls:DataGrid>
Вам нужно установить свойство SortMemberPath
на Controls:DataGridTemplateColumn
в имя свойства CLR, по которому вы хотите сортировать.
Добавил SortMemberPath="Name"
в DataGridTemplateColumn. Началась сортировка.
<data:DataGridTemplateColumn Header="Name" SortMemberPath="Name" CanUserSort="True">