WPF Toolkit DataGrid'de bir DataGridTemplateColumn'u nasıl sıralayabilirim?


93

Bir DataGridTemplateColumn içeren bir WPF Toolkit DataGrid'im var. Tüm sütunların sıralanabilir olmasını istediğimi bir ızgara özniteliğinde belirttim, ancak DataGridTemplateColumn buna izin vermiyor. Diğer tüm sütunlar sıralamaya izin verir. Hatta bu sütun için CanUserSort'u açıkça doğru olarak ayarlamayı denedim, ama şans yok. Bir şablon sütununu sıralamak mümkün mü? Tüm sütunlar için çalışan özel bir sıralayıcı sağladım, ancak başlık bir sıralama tıklamasına izin vermiyor.

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

Yanıtlar:


173

SortMemberPathÖzelliği, Controls:DataGridTemplateColumnsıralamak istediğiniz CLR özelliğinin adına ayarlamanız gerekir .


2
Mükemmel çalışıyor. Teşekkürler!
Kilhoffer

6
Tek kelimelik uyarı. Temel verileri değiştirirseniz bu otomatik olarak yeniden sıralanmayacaktır.
Kelly

1
Başka bir not: bu kulağa aptalca gelebilir, ancak sütununuzda bir Başlık (başlık) yoksa da işe yaramayacaktır - başlığa tıklamak sıralamayı tetikler. Başlığa ihtiyaç duymayan bir
sütunum var

Beklendiği gibi çalışıyor
Harmi

35

SortMemberPath="Name"DataGridTemplateColumn'a eklendi . Sıralamaya başladı.

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.