J'ai un DataGrid WPF Toolkit avec un DataGridTemplateColumn. J'ai spécifié dans un attribut de grille que je souhaite que toutes les colonnes soient triables, mais DataGridTemplateColumn ne le permettra pas. Toutes les autres colonnes permettent le tri. J'ai même essayé de définir explicitement CanUserSort sur true pour cette colonne, mais pas de chance. Est-il même possible de trier une colonne de modèle? J'ai fourni un trieur personnalisé qui fonctionne pour toutes les colonnes, mais l'en-tête ne permet pas un clic de tri.
<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>
Vous devez définir la propriété SortMemberPath
sur Controls:DataGridTemplateColumn
au nom de la propriété CLR à trier.
Ajoutée SortMemberPath="Name"
à DataGridTemplateColumn. Il a commencé à trier.
<data:DataGridTemplateColumn Header="Name" SortMemberPath="Name" CanUserSort="True">
<DataGridTemplateColumn SortMemberPath="DataDiNascita" Header="Data di nascita" IsReadOnly="True">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Path=DataDiNascita}"></DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataDiNascita,StringFormat=\{0:dd/MM/yyyy\}}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>