У меня есть 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