私はWPF DataGridを持っています。カラムヘッダーをクリックすることで並べ替えることができます。それは動作しますが、それは不安定です。どのようにして安定したソートを行うのですか?安定した並べ替えを使用してDataGridを並べ替える方法は?
私が意味する。これにより、私はこのテーブルを持っている場合:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
Science | James | D
Science | Amy | A
Science | Charlie | C
History | James | B
History | Amy | A
History | Charlie | C
あなたが期待するように私は一種の学生によって、それが動作する場合:
Class | Student | Grade
-----------------------------
Art | Amy | B
Science | Amy | A
History | Amy | A
Art | Charlie | A
Science | Charlie | C
History | Charlie | C
Art | James | A
Science | James | D
History | James | B
しかし、クラスによって私は今ソートの場合:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
History | James | B
History | Amy | A
History | Charlie | C
Science | James | D
Science | Amy | A
Science | Charlie | C
これは、学生の並べ替え順序を破壊しています(不安定な並べ替え)。私が欲しいのは、それは順序を保持安定ソート、次のとおりです。それは、デフォルトでこのように動作し、または少なくともトグルする必要がありますように
Class | Student | Grade
-----------------------------
Art | Amy | B
Art | Charlie | A
Art | James | A
History | Amy | A
History | Charlie | C
History | James | B
Science | Amy | A
Science | Charlie | C
Science | James | D
は思えます。誰にも何か提案はありますか? @ Eirikのシフトクリックのアイデアは、動作が存在することを示しています。しかし、私が本当に好きなのは、修飾子なしでそのように動作するためです。それは "これでソートし、次にこれ、これ"の原因であってはなりません。別のアルゴリズムと交換する必要があります。あなたが列をクリックしたときにシフトを押しながら複数の列でソートすることができるはずですhttp://en.wikipedia.org/wiki/Sorting_algorithm#Stability
コードの背後でこれを行う方法を探していますか、誰かがshift-click-behaviourをデフォルトの動作にする方法を知りたいと思っていますか? – Grubsnik
@ Grubsnik Shiftキーを押しながらアプローチするのが大きな問題だと思うので、誰かがソートアルゴリズムを変更する方法を知りたいと思っていました。しかし、それは仕事をします。 – TarkaDaal