WPF数据网格按日期和时间分组和排序
本文关键字:时间 排序 日期 数据 数据网 网格 WPF | 更新日期: 2023-09-27 18:13:13
我有一个WPF DataGrid绑定到约会对象的ICollectionView上,以显示在DataGrid上。我的每个约会都有一个DateTime字段,我正尝试按日期分组并按时间排序。我尝试了各种配置和日期时间格式,虽然分组是正确的,但组本身没有排序。
添加一个新的约会默认约会日期时间为现在。当我更改日期时,如果该日期不存在,则会添加该日期的新组,但这些组没有排序。
我使用了一个GroupStyle: http://www.wpftutorial.net/DataGrid.html#grouping
我还使用扩展WPF工具包(通过nuget下载)DateTimePicker为DataGrid列:
<DataGridTemplateColumn
x:Name="AppointmentDateTimeColumn"
Header="Time"
Width="Auto">
<DataGridTemplateColumn.CellStyle>
<Style
TargetType="{x:Type DataGridCell}">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type DataGridCell}">
<Grid
Background="{TemplateBinding Background}">
<ContentPresenter
VerticalAlignment="Stretch" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<xctk:DateTimePicker
Value="{Binding Path=Appointment.AppointmentDateTime, Mode=TwoWay}"
Format="ShortTime" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<xctk:DateTimePicker
Value="{Binding Path=Appointment.AppointmentDateTime, Mode=TwoWay}"
Format="ShortTime" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
我的ICollectionView初始化代码是这样的:
AppointmentList = CollectionViewSource.GetDefaultView(GetAppointments());
AppointmentList.GroupDescriptions.Add(new PropertyGroupDescription("Appointment.AppointmentDateTime.Date"));
AppointmentList.SortDescriptions.Add(new SortDescription("Appointment.AppointmentDateTime", ListSortDirection.Ascending));
任何帮助和建议都将非常感激。由于
我最终将数据网格的所有列设置为只读,并添加了几个文本框,我可以使用这些文本框编辑数据网格的选定项。在我更新后,我的网格现在正确排序。