需求背景
デフォルトのDataGridでは、列ヘッダーをクリックすると昇順(↑)と降順(↓)の2つの状態のみが切り替わります:

しかし、実際の業務シナリオでは、ユーザーがデフォルトのデータ並び順に素早く戻したい場合があります。
実装方法
親切な同僚が提供した方法です。より良い実装方法があればコメントでお知らせください:
public static class DataGridExtension
{
public static void AddSorting(this Avalonia.Controls.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の実践的なテクニックを引き続き発信していきます。フォローしていただき、交流を続け、共に成長していきましょう。