Категории
Войти
Поиск
Реклама
Полезное:
Новые статьи
Опечатка?
Выделите текст и нажмите Shift+Enter.
И мы в ближайшее время ее исправим!
Счетчики
| Переопределение isSortedCore |
|
Если значения свойства не реализуют IComparer, но метод Equals значения говорит, что оно равно другому объекту, то Compare возвращает О, сообщая о равенстве. Наконец, если ни одна из проверок не удалась, значения свойства преобразуются в строки и строковые представления сравниваются при помощи CompareTo, который реализует класс String. Самое последнее, что делает метод - проверяет направление сортировки, и если оно указывает на нисходящую сортировку, он умножает возвращаемое значение на -1, чтобы обратить смысл отношений больше/меньше. Чтобы производить сортировку из вашего класса BindingListview<T>, вам необходимо предусмотреть переопределения всех относящихся к сортировке методов и свойств базового класса. Добавления к классу включают в себя следующее: Переопределение isSortedCore, которое указывает, сортирована ли в настоящий момент коллекция. Переопределение SortDirectionCore, которое указывает направление сортировки. Переопределение SortPropertyCore, которое указывает, по какому свойству производится сортировка. Переопределение метода AppiySortCore, который устанавливает вышеперечисленные свойства, когда вызывается из базового класса в ответ на вызов IBindingList .ApplySort. Метод делегирует вызов вспомогательному методу ApplySortinternal для выполнения основной работы по сортировке. Переопределение метода RemoveSortCore, который соответствующим образом восстанавливает свойства, когда вызывается из базового класса в ответ на вызов IBindingList .RemoveSort. Объявление переменной типа List<T> для сохранения несортированной коллекции при применении сортировки. Метод ApplySortCore создает объект SortComparer для специфицированных свойства и направления сортировки и передает его вспомогательному методу ApplySortlnternal. Метод ApplySortlnternal проверяет несортированную коллекцию, была ли она заполнена, и если нет, добавляет в нее все текущие объекты в том порядке, как они расположены в коллекции на момент вызова ApplySort. Проверка заполнения списка необходима на тот случай, если список уже сортировался несколько раз подряд. Затем метод приводит коллекцию Items, унаследованную вашим классом, к ссылке типа List<T> и вызывает ее метод Sort, передавая объект SortComparer. В результате элементы коллекции, поддерживаемой базовым классом, сортируются в соответствии с критерием, переданным классу SortComparer, и логикой сравнения, реализованной в этом классе. Наконец, метод ApplySortlnternal устанавливает флаг, показывающий, что коллекция сортирована, и запускает событие через вызов метода OnListChanged, показывая, что список изменился. Наиболее подходит тип изменения set, поскольку в принципе каждый элемент коллекции мог переместиться. Метод RemoveSortCore очищает текущую коллекцию и заново заполняет ее значениями, сохраняемыми в списке исходной коллекции. Затем он очищает этот список и соответствующим образом устанавливает используемые алгоритмом переменные, показывая, что в данный момент никакой сортировки не применяется. Чтобы нельзя было изменять элементы списка, когда коллекция сортирована, вам нужно переопределить реализации соответствующих элементов IBindingList:
Newer news items:
Older news items:
|
