Avalonia小技:DataGridのソート解除追加

Avalonia小技:DataGridのソート解除追加

デフォルトでは列ヘッダークリック時に昇順・降順のみで解除不可

最終更新 2025/07/17 22:57
沙漠尽头的狼
読了目安 1 分
カテゴリ
Avalonia UI
タグ
.NET C# Avalonia UI インタラクションデザイン Avalonia

需求背景

デフォルトの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の実践的なテクニックを引き続き発信していきます。フォローしていただき、交流を続け、共に成長していきましょう。

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2026/01/11

AvaloniaのクリップボードとDataGridの問題

最近のAvaloniaデスクトップソフトウェア開発で解決した2つの問題を記録:クリップボードコピーのクラッシュ、タブ切り替え時のDataGridの遅延。根本原因を分析し、解決策を提供する

続きを読む