public HistoryBindingData() { Times = new Objects.Times(); _filters = new List <Predicate <object> >(); Filter = InternalFilter; Outcomes = new ObservableCollection <OutComeView>();; foreach (var outcome in Enum.GetValues(typeof(ServiceOutcome))) { OutComeView outcomev = new OutComeView() { Outcome = (ServiceOutcome)outcome, Show = true }; outcomev.PropertyChanged += new PropertyChangedEventHandler(outcomev_PropertyChanged); Outcomes.Add(outcomev); } States = new ObservableCollection <StateView>();; foreach (var state in Enum.GetValues(typeof(ServiceState))) { StateView statev = new StateView() { State = (ServiceState)state, Show = true }; statev.PropertyChanged += new PropertyChangedEventHandler(statev_PropertyChanged); States.Add(statev); } }
void outcomev_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (_historyView == null) { _historyView = CollectionViewSource.GetDefaultView(History); } OutComeView ov = (OutComeView)sender; Predicate <object> filter = new Predicate <object>(ov.FilterByOutCome); if (ov.Show) { RemoveFilter(filter); } else { AddFilter(filter); } _historyView.Filter = Filter; }