public CollectionViewDemoViewModel() { Enumerable = new[] { 1, 2, 3, 4, 5 }; FilteredView1 = Enumerable.AsReadOnlyFilteredView(FilterMethod, TimeSpan.FromMilliseconds(10), WpfSchedulers.Dispatcher, this.ObservePropertyChanged(x => x.Filter)); FilteredView2 = Enumerable.AsReadOnlyFilteredView(FilterMethod, TimeSpan.FromMilliseconds(10), WpfSchedulers.Dispatcher, this.ObservePropertyChanged(x => x.Filter)); ObservableCollection = new ObservableCollection <int>(new[] { 1, 2, 3, 4, 5 }); ObservableDefaultView = CollectionViewSource.GetDefaultView(ObservableCollection); ObservableFilteredView = ObservableCollection.AsFilteredView(Filter, TimeSpan.Zero, WpfSchedulers.Dispatcher); ThrottledFilteredView = ObservableCollection.AsFilteredView(Filter, TimeSpan.FromMilliseconds(10), WpfSchedulers.Dispatcher); this.ObservePropertyChanged(x => x.Filter, false) .Subscribe( x => { WpfSchedulers.Dispatcher.Schedule(() => ObservableDefaultView.Filter = o => Filter((int)o)); ObservableFilteredView.Filter = Filter; ThrottledFilteredView.Filter = Filter; }); }