90 votes

Comment puis-je trier un DataGridTemplateColumn sur WPF Toolkit DataGrid?

J'ai un WPF Toolkit DataGrid avec un DataGridTemplateColumn. J'ai précisé dans une grille d'attribut que je souhaite à toutes les colonnes sont triables, mais le DataGridTemplateColumn ne permettra pas à elle. Toutes les autres colonnes ne permet le tri. J'ai même essayé de définir explicitement CanUserSort à true pour que la colonne, mais pas de chance. Est-il même possible de trier une colonne de modèle? J'ai fourni une coutume trieur qui fonctionne pour toutes les colonnes, mais l'en-tête ne permet pas un tri, cliquez.

<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>

162voto

unforgiven3 Points 9608

Vous devez définir l' SortMemberPath bien sur Controls:DataGridTemplateColumn pour le nom de la CLR de la propriété que vous souhaitez trier.

28voto

ferrell Points 149

Ajouté SortMemberPath="Nom" pour DataGridTemplateColumn. Il a commencé le tri.Merci.

14voto

daniele3004 Points 62
 <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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X