1

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

ヘルプ\アドバイスをいただければ幸いです。ありがとう

4

1 に答える 1

1

最終的に、データ グリッドのすべての列を読み取り専用にし、データ グリッドの選択した項目を編集できるいくつかのテキスト ボックスを追加しました。更新後、グリッドが正しくソートされるようになりました。

于 2013-06-05T11:58:45.877 に答える