2009-08-18 4 views
26

sortierbar ist Ich verwende C# in Visual Studio 2008 und ich habe das WPF-Toolkit installiert. Ich habe ein DataGrid in testtest.xaml erstellt. Die Spalten ID und Parts $ können das DataGrid durch Klicken auf die entsprechenden Spaltenüberschriften sortieren. Die Spaltenüberschrift "Datum vollständig" verfügt jedoch nicht über diese Fähigkeit. Ich habe das Tag "DataGridTemplateColumn" verwendet, um die Daten für diese Spalte zu formatieren. Wie programmierst du die Spaltenüberschrift "Fertig", damit du auf die Spaltenüberschrift "Vollständiges Datum" klicken und diese Spalte sortieren kannst. Wenn Sie auf die Spalte klicken, wird der Pfeil nicht nur nicht angezeigt, sondern die Spaltenüberschrift ist nicht "anklickbar". DankeErstellen eines DataGrid-Spaltenheaders, der in WPF mit 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> 

Antwort

53

In Ihrem DataGridTemplateColumn Sie haben SortMemberPath auf "". Wenn Sie dies auf eine tatsächliche Eigenschaft für das Element festlegen (z. B. CompleteDate), sollten Sie in der Lage sein zu sortieren. Sie können auch CanUserSort="true" oder CanUserSort="false" für ausgewählte Spalten festlegen.

SortMemberPath gibt die zu sortierende Eigenschaft an, wenn der Benutzer eine Sortierung versucht. Wenn diese nicht gesetzt ist, dann ist das Gitter nicht wissen, wie diese Spalte zu sortieren (es tut nicht den Text in der Spalte verwenden)

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