2009-08-18 13 views
26

Sto utilizzando C# in Visual Studio 2008 e ho installato WPF Toolkit. Ho creato un DataGrid in testtest.xaml. Le colonne ID e Parts $ hanno la capacità di ordinare il DataGrid facendo clic sulle rispettive intestazioni di colonna. Tuttavia, l'intestazione della colonna Data completa non ha quell'abilità. Ho usato il tag "DataGridTemplateColumn" per formattare le date per questa colonna. Come si programma l'intestazione della colonna Data completa in modo da poter fare clic sull'intestazione della colonna Data completa e ordinare la colonna. Se si fa clic sulla colonna, la freccia non solo non viene visualizzata ma l'intestazione della colonna non è "selezionabile". GrazieCreazione di un'intestazione di colonna DataGrid ordinabile in WPF utilizzando 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> 

risposta

53

Nella tua DataGridTemplateColumn avete SortMemberPath impostato su "". Se si imposta questa proprietà su una proprietà effettiva sull'elemento (ad esempio, CompleteDate), si dovrebbe essere in grado di ordinare. È inoltre possibile impostare CanUserSort="true" o CanUserSort="false" sulle colonne selezionate.

SortMemberPath fornisce la proprietà da ordinare quando l'utente tenta un ordinamento. Se questo non è impostato, quindi la griglia non sa come ordinare quella colonna (lo fa non utilizzare il testo nella colonna)

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