web-dev-qa-db-fra.com

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

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

Vous devez définir la propriété SortMemberPath sur Controls:DataGridTemplateColumn au nom de la propriété CLR à trier.

158
Rob

Ajoutée SortMemberPath="Name" à DataGridTemplateColumn. Il a commencé à trier.

<data:DataGridTemplateColumn Header="Name" SortMemberPath="Name" CanUserSort="True">
28
ferrell
 <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>
13
daniele3004