2010-04-29 31 views
74

Tôi có một DataGrid Bộ công cụ WPF với một DataGridTemplateColumn. Tôi đã xác định trong một thuộc tính lưới mà tôi muốn tất cả các cột được sắp xếp, nhưng DataGridTemplateColumn sẽ không cho phép nó. Tất cả các cột khác đều cho phép sắp xếp. Tôi thậm chí đã cố gắng thiết lập rõ ràng CanUserSort thành true cho cột đó, nhưng không may mắn. Thậm chí có thể sắp xếp cột mẫu không? Tôi đã cung cấp bộ sắp xếp tùy chỉnh hoạt động cho tất cả các cột, nhưng tiêu đề sẽ không cho phép nhấp chuột sắp xếp.Làm thế nào tôi có thể sắp xếp một DataGridTemplateColumn trên một DataFrid WPF Toolkit?

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

Trả lời

134

Bạn cần phải đặt SortMemberPath tài sản trên Controls:DataGridTemplateColumn đến tên của thuộc tính CLR bạn muốn sắp xếp trên.

+2

Hoạt động hoàn hảo. Cảm ơn! – Kilhoffer

+6

Một lời cảnh báo. Điều này sẽ không tự động sắp xếp lại nếu bạn thay đổi dữ liệu cơ bản. – Kelly

+1

Một lưu ý khác: điều này có thể âm thanh ngớ ngẩn, nhưng nếu cột của bạn không có Tiêu đề (tiêu đề), nó cũng sẽ không hoạt động - việc nhấp vào tiêu đề sẽ kích hoạt sắp xếp. Tôi có một cột không cần tiêu đề và tôi đã sắp xếp tiêu đề này bằng cách đặt Tiêu đề = "" – Bokoskokos

24

Đã thêm SortMemberPath="Name" vào DataGridTemplateColumn. Nó bắt đầu phân loại.

<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> 
Các vấn đề liên quan