2009-08-18 17 views
26

Visual Studio 2008でC#を使用していて、WPFツールキットをインストールしています。私はtesttest.xamlにDataGridを作成しました。 ID列とParts $列には、それぞれの列ヘッダーをクリックしてDataGridを並べ替える機能があります。ただし、完全な列見出しにはその能力がありません。私はタグ "DataGridTemplateColumn"を使用して、この列の日付を書式設定しました。完全な日付列ヘッダーをクリックしてその列をソートできるように、列ヘッダーの完全日付をどのように設定しますか?列をクリックすると、矢印は表示されませんが、列ヘッダーは「クリック可能」ではありません。 は、あなたのDataGridTemplateColumnあなたはSortMemberPathは "" に設定されているで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

ありがとうございます。これをアイテムの実際のプロパティ(例: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> 
(それは ないは、列のテキストを使用しています)
関連する問題