2010-04-29 19 views
74

Bir DataGridTemplateColumn ile bir WPF Toolkit DataGrid sahibim. Tüm sütunların sıralanabilmesini istediğim bir kılavuz niteliğinde belirttim, ancak DataGridTemplateColumn buna izin vermiyor. Diğer tüm sütunlar sıralamaya izin veriyor. Hatta bu sütun için CanUserSort'u doğru olarak ayarlamayı denedim, ancak şans yok. Şablon sütununu sıralamak mümkün mü? Tüm sütunlar için çalışan bir özel sıralayıcı sağladım, ancak başlık bir tıklamaya izin vermeyecek.Bir DataGridTemplateColumn'u WPF Toolkit DataGrid'de nasıl sıralayabilirim?

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

cevap

134

Sen üzerinde sıralamak istediğiniz CLR özelliğinin ismine Controls:DataGridTemplateColumn üzerine SortMemberPath özelliğini ayarlamanız gerekir. DataGridTemplateColumn için SortMemberPath="Name" Eklendi

+2

eserler. Teşekkürler! – Kilhoffer

+6

Bir uyarı kelimesi. Bu, alttaki verileri değiştirirseniz, otomatik olarak yeniden sıralanmaz. – Kelly

+1

Başka bir not: Bu aptalca gelebilir, ancak eğer sütununuz bir Başlık (başlık) içermiyorsa aynı zamanda işe yaramayacaktır - başlık tıklatıldığında sıralama tetiklenir. Bir üstbilgiye ihtiyaç duymayan bir sütüm var ve bunu "Başlık" = "" ayarlayarak sıraya dizdim – Bokoskokos

24

Sıralama başladı. mükemmel

<data:DataGridTemplateColumn Header="Name" SortMemberPath="Name" CanUserSort="True"> 
11
<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> 
İlgili konular