Добавление функций интерфейса IBindingListView

более конкретно интерфейс b ibindinglistview

Если вы помните из главы 7, существует уровень функциональных возможностей привязки данных, определяемый интерфейсом IBindingListView, Который вы можете поддерживать, чтобы сделать свои коллекции еще богаче. Более конкретно, интерфейс IBindingListView Вводит возможности сортировки более чем по одному свойству и фильтрации по некоторому выражению фильтра, которая позволяет показывать одновременно только часть нижележащей коллекции. Интерфейс IBindingListView Определяет четыре дополнительных свойства и два метода, которые вам нужно реализовать для полной поддержки интерфейса. Булевы свойства SupportsAdvancedSorting И SupportsFiltering Указывают, какие из двух возможностей вы поддерживаете. Свойство SortDescriptions Возвращает коллекцию ListSortDescriptionCoilection, Которая содержит любые критерии сортировки, действительные в настоящий момент. Каждый объект ListSortDescrip — Tion В коллекции является просто парой, ассоциирующей PropertyDescriptor И ListSortDirection Для каждого из свойств, к которым применяется сортировка. Свойство Filter Поддерживает установку и получение строки выражения фильтра, которую вы используете для настройки того содержания коллекции, которое представляется любому использующему коллекцию. Метод ApplySort Аналогичен тому, что определен в интерфейсе IBindingList, Но принимает параметр ListSortDescriptionCoilection Вместо одиночных PropertyDescriptor И ListSortDirection. Каждый ListSortDescription В этой коллекции содержит дескриптор свойства и направление сортировки, что позволяет сортировать по каждому критерию по очереди. Метод RemoveFilter Удаляет любой действующий в настоящий момент фильтр и восстанавливает коллекцию в ее полном содержании.

Хотя это звучит как нечто самоочевидное, реализация этого интерфейса дело нетривиальное. Сортировку по нескольким свойствам реализовать на самом деле довольно просто, но это требует некоторых расширений класса SortComparer<T> И логики сортировки, представленных ранее. Фильтрация может выполняться различными способами, но еще более усложняет положение дел, если вы хотите разрешить добавления и удаления из коллекции, пока она находится в фильтрованном состоянии. Будучи фильтрованной, ваша коллекция в принципе может еще и сортироваться, так что вы должны быть способны вернуться к исходному, возможно, модифицированному списку от сортированного/нефильтрованного, фильтрованного/несортированного и фильтрованного/сортированного состояний.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *