我有一个WPF DataGrid绑定到要在DataGrid上显示的约会对象的ICollectionView。我的约会每个都有一个DateTime字段,我试图按日期分组并按时间排序。我尝试了各种配置和日期时间格式,虽然分组正确完成,但组本身并没有排序。
添加新的约会会将约会日期时间默认为“立即”。当我更改日期时,如果该日期不存在,则添加该日期的新组,但不对这些组进行排序。
我使用了这里找到的GroupStyle:http://www.wpftutorial.net/DataGrid.html#grouping
我也在使用DataGrid列的Extended WPF Toolkit(通过nuget下载)DateTimePicker:
<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));
任何帮助\建议将不胜感激。感谢
答案 0 :(得分:1)
我最终只是将datagrid的所有列都只读,并添加了一些文本框,我可以使用这些文本框编辑数据网格的选定项目。我的网格在更新后现在正确排序。