c# - WPF数据网格按所选列自动排序

标签 c# wpf xaml datagrid

目前我正在研究 WPF 的数据网格。我遇到了自动排序的问题。这是我的 xaml:

<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 类之前,但这种方法不起作用完全没有(甚至不知道是否需要)。

编辑:

可以通过以下方式完成:

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

最佳答案

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

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

关于c# - WPF数据网格按所选列自动排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34421719/

相关文章:

c# - 在 wpf 中创建自定义用户控件以供重用

wpf - XAML 中从形状到路径的转换

c# - 在 StaticResource Canvas 中为 Path 设置不同的大小或自动调整大小

c# - 在共享大小组旁边为网格列提供最小宽度

c# - 如何连接 2 个字节?

C# 能力?

c# - 检查驱动器是否存在(字符串路径)

c# - MahApps Flyout Close 命令和 Is Open 未正确绑定(bind)

c#对象在当前上下文中不存在

c# - 为我的每个背景 DirectX 游戏重复我按下的键