需求背景
默认DataGrid点击列头只能在升序(↑)、降序(↓)两种状态间切换:
但在实际业务场景中,用户可能需要快速恢复默认数据排序。
实现方案
可爱的同事提供的方法,有更好的实现方式欢迎留言:
public staticclassDataGridExtension
{
public static void AddSorting(this DataGrid dataGrid)
{
var view = new DataGridCollectionView(dataGrid.ItemsSource);
dataGrid.Sorting += (s, e) =>
{
if (s is not Avalonia.Controls.DataGrid) return;
var memberPath = e.Column.SortMemberPath;
var sortDescription = view.SortDescriptions.FirstOrDefault(d => d.PropertyPath == memberPath);
if (sortDescription is not null && sortDescription.Direction == ListSortDirection.Descending)
{
view.SortDescriptions.Clear();
e.Handled = true;
}
dataGrid.ItemsSource = view;
view.Refresh();
};
}
}
效果演示
本号持续分享Avalonia实战技巧,欢迎关注,保持交流,共同进步。
作者:小码编匠

面向工厂自动化的智能语音播报方案(基于.NET Windows服务)
工业自动化UI太难做?WPF 这套工业级控件方案真香(附源码)
工业自动化 WPF + Halcon 的模块化机器视觉解决方案
.NET 开发必备:轻量封装库一站式解决 Excel/Word/PPT自动化难题
开源福利!八款 WPF + HandyControl 工业管理系统源码全公开
WinForm + Win32 API 自定义无边框窗口实战(工业软件必备)
基于 HslCommunication 的多端同步PLC远程监控系统
WinForm 数据采集实战:从串口通信到MES对接的轻量化解决方案
一个拒绝过度设计的 .NET 快速开发框架:开箱即用,专注"干活"
WinForm + SunnyUI 与 MQTTnet 实现智能可视化的火警联动大屏系统
工业自动化实战:基于 .NET + ModBus RTU协议的称重机开发
WinForm 基于 SunnyUI+ PCLSharp 的机器视觉焊接系统
.NET 9 + WPF + Halcon 构建工业视觉流程框架:从架构设计到落地实践
WinForm 高分屏适配难题?一款强大的控件自适应缩放工具
.NET 桌面应用 (WPF/WinForm) 高效自动更新解决方案
一行代码快速开发 AntdUI 风格的 WinForm 通用后台框架
WinForm + SQL Server + Modbus 实现仓库温控上位机系统开发
WinForm 开发的多功能工具:串口通信、加密解密、图像转换等功能
觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

