Почему Datagrid в WPF может сортировать, когда все данные в этом столбце одинаковы? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть вопрос. Когда я пытаюсь сделать пользовательскую сортировку данных для моей сетки данных. Я обнаружил проблему: сортировка работает, когда все данные в каждой ячейке этого столбца одинаковы.

Более подробно: у меня есть список, включающий (id, name), идентификатор уникален, но все имя = " * * ". Этот символ является японским.

Я пытался заставить класс наследовать Icomparer и переопределить метод Comparer () с помощью

CompareInfo compInfo = new CompareInfo.GetCompareInfo("ja-JP");
return compInfo.Compare(str1,str2, CompareOption.StringSort) * mode;

Режим - это направление сортировки

Мне пришлось попробуйте все CompareOption. Включите использование Strings.StrComp () из VB, но при сортировке он все равно выдаст другой результат. Я ожидаю, что, когда все значения этого столбца будут одинаковыми, индекс элемента моей таблицы данных не изменится.

Спасибо, извините, мой плохой engli sh!

1 Ответ

0 голосов
/ 20 апреля 2020

Проблема в том, что порядок сортировки неопределен, когда имена совпадают. Сортируйте также по id, когда имена равны.

CompareInfo compInfo = new CompareInfo.GetCompareInfo("ja-JP");
int result = compInfo.Compare(str1, str2, CompareOption.StringSort);
if (result == 0) { // str1 and str2 are equal.
    result = compInfo.Compare(id1, id2);
}
return result * mode;

Предполагая, что id является строкой. Если идентификаторы int, то сравните

if (result == 0) { // str1 and str2 are equal.
    result = id1.CompareTo(id2);
}

Примечание: CompareInfo.Compare и Int32.CompareTo возвращают -1, если первое значение меньше второго, +1 первое больше второго и в противном случае, когда оба значения равны, 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...