WPF Multiple CollectionView with different filters on same collection WPF Multiple CollectionView with different filters on same collection wpf wpf

WPF Multiple CollectionView with different filters on same collection


This answer helped me with this exact problem. The static CollectionViewSource.GetDefaultView(coll) method will always return the same reference for a given collection, so basing multiple collection views on the same reference will be counterproductive. By instantiating the view as follows:

ICollectionView filteredView = new CollectionViewSource { Source=messageList }.View;

The view can now be filtered/sorted/grouped independently of any others. Then you can apply your filtering.

I know it's been a couple months and you have probably solved your problem by now, but I ran across this question when I had the same problem so I figured I would add an answer.


For anyone struggling with the problem that the filteredView does not observe the sourceCollection (messageList in this example):

I came around with this solution:

ICollectionView filteredView = new CollectionViewSource { Source=messageList }.View;messageList.CollectionChanged += delegate { filteredView.Refresh(); };

So it will refresh our filteredView evertytime the CollectionChanged event of the source get's fired. Of course you can implement it like this too:

messageList.CollectionChanged += messageList_CollectionChanged;private void messageList_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e){    filteredView.Refresh(); }

Consider using PropertyChanged-Events when filtering on a specific Property is wanted.