使用C在WPF中使DataGrid列标题可排序#
我在VisualStudio2008中使用C#,并且已经安装了WPF工具包。我在testtest.xaml中创建了一个数据网格。ID和Parts$列可以通过单击各自的列标题对DataGrid进行排序。但是,列标题“完成日期”不具有该功能。我使用标记“DataGridTemplateColumn”来格式化此列的日期。如何对列标题Complete Date进行编程,以便单击Complete Date列标题并对该列进行排序。如果单击该列,不仅不会显示箭头,而且列标题也不“可单击”。 多谢各位使用C在WPF中使DataGrid列标题可排序#,wpf,datagrid,header,jquery-ui-sortable,Wpf,Datagrid,Header,Jquery Ui Sortable,我在VisualStudio2008中使用C#,并且已经安装了WPF工具包。我在testtest.xaml中创建了一个数据网格。ID和Parts$列可以通过单击各自的列标题对DataGrid进行排序。但是,列标题“完成日期”不具有该功能。我使用标记“DataGridTemplateColumn”来格式化此列的日期。如何对列标题Complete Date进行编程,以便单击Complete Date列标题并对该列进行排序。如果单击该列,不仅不会显示箭头,而且列标题也不“可单击”。 多谢各位 任务
任务
在您的
DataGridTemplate列中
将SortMemberPath设置为“”。如果将其设置为项目的实际属性(例如CompleteDate),则应该能够进行排序。您还可以对所选列设置CanUserSort=“true”
或CanUserSort=“false”
SortMemberPath在用户尝试排序时提供要排序的属性。如果未设置,则网格不知道如何对该列进行排序(它不使用列中的文本)
如果列绑定到属性,是否也可以?怎么做?
<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>
<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>