Отфильтруйте коллекцию ObservableCollection <T>по нескольким критериям - PullRequest
0 голосов
/ 25 февраля 2011

Как я могу отфильтровать коллекцию ObservableCollection, привязанную к WPF DataGrid, когда я ввожу данные в filter_textboxes над столбцами DataGrid?

Есть ли простое решение без использования библиотек codeproject ...?

Ответы [ 2 ]

0 голосов
/ 19 августа 2012

У меня была очень похожая проблема, и есть довольно простое решение. Короче говоря:

Чтобы применить несколько фильтров к коллекции, связанной с сеткой данных WPF, необходимо создать экземпляр объекта CollectionViewSource в качестве прокси между представлением и коллекцией (это также будет работать с другими элементами управления коллекцией). Это позволит вам подписать несколько обработчиков событий фильтра на его событие фильтра. Фильтры применяются в том порядке, в котором они подписаны, и их можно удалить, отменив подписку.

Если вы использовали статический метод CollectionViewSource.GetDefaultView () в вашем codebehind или ViewModel, это вернет экземпляр ICollectionView, который будет поддерживать только один фильтр со свойством Filter.

Вы можете найти пример с исходным кодом здесь http://www.codeproject.com/Articles/442498/Multi-filtered-WPF-DataGrid-with-MVVM

0 голосов
/ 25 февраля 2011

Я задал похожий вопрос некоторое время назад, который может оказаться полезным: Фильтр WPF TreeView с использованием MVVM

Это должен быть очень похожий подход для DataGrid. По сути, вы хотите создать CollectionViewSource с использованием ObservableCollection и связать свой DataGrid с ним вместо привязки непосредственно к ObservableCollection, а затем просто установить CollectionViewSource Filter, когда пользователь вводит.

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