WPF Toolkit DataGridでDataGridTemplateColumnを並べ替える方法を教えてください。


92

1つのDataGridTemplateColumnを持つWPF Toolkit DataGridがあります。すべての列を並べ替え可能にすることをグリッド属性で指定しましたが、DataGridTemplateColumnではそれを許可していません。他のすべての列はソートを許可します。その列でCanUserSortを明示的にtrueに設定することも試みましたが、うまくいきませんでした。テンプレート列をソートすることもできますか?すべての列で機能するカスタムソーターを提供しましたが、ヘッダーで並べ替えのクリックができません。

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

回答:


171

あなたは、設定する必要SortMemberPathのプロパティをControls:DataGridTemplateColumn使用すると、上ソートするCLRプロパティの名前に。


2
完璧に動作します。ありがとう!
Kilhoffer、

6
警告の一言。基になるデータを変更した場合、これは自動的に再ソートされません。
ケリー

1
別のメモ:これはばかげて聞こえるかもしれませんが、列にヘッダー(タイトル)がない場合も機能しません。ヘッダーをクリックすると、並べ替えがトリガーされます。ヘッダーを必要としない列があり、Header = ""
Bokoskokosを

期待どおりに機能
Harmi

33

SortMemberPath="Name"DataGridTemplateColumnに追加されました。仕分けを始めました。

<data:DataGridTemplateColumn Header="Name" SortMemberPath="Name" CanUserSort="True">

15
 <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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.