WPF Toolkit DataGrid에서 DataGridTemplateColumn을 어떻게 정렬 할 수 있습니까?


92

하나의 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
경고 한마디. 기본 데이터를 변경하면 자동으로 다시 정렬되지 않습니다.
Kelly

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.