Как отсортировать DataGrid с помощью стабильной сортировки?

У меня есть WPF 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 о щелчке shift -работает, и это показывает, что поведение присутствует. Однако мне бы очень хотелось, чтобы это работало без каких-либо модификаторов. Это не должно быть причиной «сортировать по этому, затем по этому, затем по этому», это должен быть случай замены алгоритма на другой.

Смотрите это:http://en.wikipedia.org/wiki/Sorting_algorithm#Stability

8
задан TarkaDaal 7 September 2012 в 11:50
поделиться