2009-08-18 3 views
26

Visual Studio 2008에서 C#을 사용하고 WPF Toolkit을 설치했습니다. testtest.xaml에 DataGrid를 만들었습니다. ID 및 Parts $ 열에는 해당 열 머리글을 클릭하여 DataGrid를 정렬 할 수있는 기능이 있습니다. 그러나 Complete Date 열 머리글에는 해당 기능이 없습니다. "DataGridTemplateColumn"태그를 사용하여이 열의 날짜 형식을 지정했습니다. 완료 날짜 열 머리글을 클릭하고 해당 열을 정렬 할 수 있도록 열 머리글 완료 날짜를 어떻게 프로그래밍합니까? 열을 클릭하면 화살표가 표시되지 않을뿐만 아니라 열 머리글은 "클릭 가능"하지 않습니다. 는 당신C#을 사용하여 WPF에서 DataGrid 열 헤더 정렬 가능

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

답변

53

감사 당신의 DataGridTemplateColumn 당신이 SortMemberPath "가"로 설정해야합니다. 이것을 아이템의 실제 속성 (예 : CompleteDate)으로 설정하면 정렬 할 수 있습니다. 선택한 열에서 CanUserSort="true" 또는 CanUserSort="false"을 설정할 수도 있습니다.

SortMemberPath는 사용자가 정렬을 시도 할 때 정렬 할 속성을 제공합니다. 이 설정되지 않은 경우, 그리드가 열을 정렬하는 방법을 알고하지 않습니다

  <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> 
(그것은 하지는 열에서 텍스트를 사용하지 않습니다)