Метод Apply Sort Core

b метод b applysortlnternal b

Метод ApplySortCore Создает объект SortComparer Для специфицированных свойства и направления сортировки и передает его вспомогательному методу ApplySortlnternal. Метод ApplySortlnternal Проверяет несортированную коллекцию, была ли она заполнена, и если нет, добавляет в нее все текущие объекты в том порядке, как они расположены в коллекции на момент вызова ApplySort. Проверка заполнения списка необходима на тот случай, если список уже сортировался несколько раз подряд. Затем метод приводит коллекцию Items, Унаследованную вашим классом, к ссылке типа List<T> И вызывает ее метод Sort, Передавая объект SortComparer. В результате элементы коллекции, поддерживаемой базовым классом, сортируются в соответствии с критерием, переданным классу SortComparer, И логикой сравнения, реализованной в этом классе. Наконец, метод ApplySortlnternal Устанавливает флаг, показывающий, что коллекция сортирована, и запускает событие через вызов метода OnListChanged, Показывая, что список изменился. Наиболее подходит тип изменения Reset, Поскольку в принципе каждый элемент коллекции мог переместиться. Метод RemoveSortCore Очищает текущую коллекцию и заново заполняет ее значениями, сохраняемыми в списке исходной коллекции. Затем он очищает этот список и соответствующим образом устанавливает используемые алгоритмом переменные, показывая, что в данный момент никакой сортировки не применяется. Чтобы нельзя было изменять элементы списка, когда коллекция сортирована, вам нужно переопределить реализации соответствующих элементов IBindingList: Для реализации интерфейса IRaiseitemChangedEvents Вы должны для каждого свойства объектов, входящих в ваши коллекцию, предоставить дескриптору свойства возвратно-вызываемый делегат. Ваш возвратный вызов будет активироваться всякий раз, когда значение свойства устанавливается через дескриптор. Довольно странно, что это не экспонируется как событие, на которое можно было бы явным образом подписаться; вы должны вызывать методы AddValueChanged И RemoveValueChanged, Передавая делегат воз — вратно-вызываемого метода.