У меня была очень похожая проблема, и есть довольно простое решение. Короче говоря:
Чтобы применить несколько фильтров к коллекции, связанной с сеткой данных WPF, необходимо создать экземпляр объекта CollectionViewSource в качестве прокси между представлением и коллекцией (это также будет работать с другими элементами управления коллекцией). Это позволит вам подписать несколько обработчиков событий фильтра на его событие фильтра. Фильтры применяются в том порядке, в котором они подписаны, и их можно удалить, отменив подписку.
Если вы использовали статический метод CollectionViewSource.GetDefaultView () в вашем codebehind или ViewModel, это вернет экземпляр ICollectionView, который будет поддерживать только один фильтр со свойством Filter.
Вы можете найти пример с исходным кодом здесь http://www.codeproject.com/Articles/442498/Multi-filtered-WPF-DataGrid-with-MVVM