DataGrid に表示される予定オブジェクトの ICollectionView にバインドされた WPF DataGrid があります。私の予定にはそれぞれ DateTime フィールドがあり、日付でグループ化し、時間で並べ替えようとしています。さまざまな構成と日時形式を試しましたが、グループ化は正しく行われていますが、グループ自体は並べ替えられていません。
新しい予定を追加すると、予定の日時がデフォルトで Now になります。日付を変更すると、その日付の新しいグループが存在しない場合は追加されますが、グループは並べ替えられません。
ここにある 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));
ヘルプ\アドバイスをいただければ幸いです。ありがとう