2009-08-18 27 views
26

Estoy usando C# en Visual Studio 2008 y he instalado WPF Toolkit. Creé un DataGrid en testtest.xaml. Las columnas ID y Parts $ tienen la capacidad de ordenar DataGrid haciendo clic en sus respectivas cabeceras de columna. Sin embargo, la fecha completa del encabezado de columna no tiene esa capacidad. Usé la etiqueta "DataGridTemplateColumn" para formatear las fechas de esta columna. ¿Cómo se programa la fecha completa del encabezado de columna para que pueda hacer clic en el encabezado de la columna Fecha completa y ordenar esa columna. Si hace clic en la columna, la flecha no solo no se muestra, sino que el encabezado de la columna no se puede "hacer clic". GraciasHacer que un encabezado de columna de DataGrid pueda clasificarse en WPF usando C#

<Label Height="22" HorizontalAlignment="Left" Margin="10,45,0,0" Name="label1" VerticalAlignment="Top" Width="41">Task</Label> 
    <my:DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="140,83,67,28" Name="dataGrid1" GridLinesVisibility="Vertical" IsReadOnly="True"> 
     <my:DataGrid.Columns> 
      <my:DataGridTextColumn Binding="{Binding Path=[ID]}" Header="ID" /> 
      <my:DataGridTextColumn Binding="{Binding Path=p}" Header="Parts $" /> 
      <my:DataGridTemplateColumn SortMemberPath="" Header="Complete Date"> 
       <my:DataGridTemplateColumn.CellTemplate > 
        <DataTemplate> 
         <TextBlock> 
          <TextBlock.Text> 
           <Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="{}{0:MM/dd/yyyy}"/> 
          </TextBlock.Text> 
         </TextBlock> 
        </DataTemplate> 
       </my:DataGridTemplateColumn.CellTemplate> 
      </my:DataGridTemplateColumn> 
     </my:DataGrid.Columns> 
    </my:DataGrid> 
</Grid> 

Respuesta

53

En su DataGridTemplateColumn tiene SortMemberPath encuentre en "". Si establece esto en una propiedad real en el elemento (por ejemplo, CompleteDate), debería poder ordenar. También puede establecer CanUserSort="true" o CanUserSort="false" en las columnas seleccionadas.

SortMemberPath da la propiedad de ordenar cuando el usuario intenta una ordenación. Si esto no se establece, entonces la red no sabe cómo ordenar esa columna (lo hace no utilizan el texto de la columna)

  <my:DataGridTemplateColumn SortMemberPath="CompleteDate" Header="Complete Date" CanUserSort="true"> 
      <my:DataGridTemplateColumn.CellTemplate > 
        <DataTemplate> 
         <TextBlock> 
          <TextBlock.Text> 
           <Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="{}{0:MM/dd/yyyy}"/> 
          </TextBlock.Text> 
         </TextBlock> 
        </DataTemplate> 
       </my:DataGridTemplateColumn.CellTemplate> 
      </my:DataGridTemplateColumn> 
Cuestiones relacionadas