目前我正在研究 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/