You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中DataGrid按Score列排序是否可行?附相关实现代码

WPF DataGrid按Score列排序实现方案

当然可以实现,以下是两种常用的解决方案:

一、默认加载时按Score降序显示

修改C#代码

如果只需要默认加载时按Score降序排列,直接对数据源排序后绑定即可:

// 假设bergretterData.Read()返回IEnumerable<Bergretter>类型
datagrid_BergretterHighscore.ItemsSource = bergretterData.Read().OrderByDescending(x => x.Score);

如果数据源是EF的DbSet,建议先转为List再排序(或直接在数据库层面排序):

datagrid_BergretterHighscore.ItemsSource = bergretterData.Read().ToList().OrderByDescending(x => x.Score);

支持用户交互排序的版本

如果希望用户后续能点击列头切换排序方向,使用ListCollectionView包装数据源,并设置默认排序规则:

var dataList = bergretterData.Read().ToList();
var collectionView = new System.Windows.Data.ListCollectionView(dataList);
// 添加Score列的降序排序规则
collectionView.SortDescriptions.Add(new System.ComponentModel.SortDescription("Score", System.ComponentModel.ListSortDirection.Descending));
datagrid_BergretterHighscore.ItemsSource = collectionView;

二、XAML代码优化

你的现有XAML已设置SortDirection="Descending",只需确保DataGrid允许用户排序(默认开启,可显式声明避免意外):

<DataGrid Name="datagrid_BergretterHighscore" Margin="5,5,5,5" AutoGenerateColumns="False" CanUserSortColumns="True">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Vorname}" Header="Vorname" />
        <DataGridTextColumn Binding="{Binding Nachname}" Header="Nachname" />
        <DataGridTextColumn Binding="{Binding Score}" Header="Score" SortDirection="Descending" />
    </DataGrid.Columns>
</DataGrid>

关键注意点

  • 确保Score属性为数值类型(如int、double),否则会按字符串规则排序,导致结果不符合预期。
  • 数据库层面排序(不转List直接用OrderByDescending)比内存排序性能更优,适合大数据量场景。

内容的提问来源于stack exchange,提问作者Wiiscord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:05:20