关于C#:WPF DataGrid按所选列自动排序

WPF datagrid automatic sorting by chosen column

当前,我正在研究WPF的数据网格。自动排序出现问题。这是我的xaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<DataGrid x:Name="customTasksDataGrid" Margin="10,10,10,38" Grid.Column="1" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
    <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
    <DataGridTextColumn Header="Client" Binding="{Binding Client.Names}"/>
    ...
    <DataGridTextColumn Header="DueDate" Binding="{Binding DueDate, StringFormat=\\{0:dd.MM.yy HH:mm\\}}" SortDirection="Ascending">
        <DataGridTextColumn.ElementStyle>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Foreground" Value="{Binding Path=., Converter={StaticResource converter}}"/>
            </Style>
        </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>
    ...
</DataGrid.Columns>

问题是:当我更新数据网格的ItemsSource时,数据网格按ID列而不是根据需要的DueDate排序。

当对我的数据网格执行任何更新操作时,如何通过DueDate实现自动排序?

我尝试使用:PropertyChanged.Fody中的[ImplementPropertyChanged]标记并将其放在我的CustomTask类之前,但是这种方法根本行不通(甚至不知道是否需要)。

编辑:

可以通过以下方式完成:

1
2
customTasksDataGrid.ItemsSource = model;
customTasksDataGrid.Items.SortDescriptions.Add(new SortDescription("DueDate", ListSortDirection.Ascending));


您可以在后面的代码中简单地对数据网格进行排序:

1
datagrid.Items.SortDescriptions.Add(new SortDescription("DueDate", ListSortDirection.Ascending));