public void AddFilter(IFilterModel mdl, bool allowRemove, IEnumerable <Property> sourceProperties) { InitializeFilter(); _filter.Add(mdl); if (mdl is IUIFilterModel) { var uimdl = (IUIFilterModel)mdl; var vmdl = FilterViewModel.Fetch(ViewModelFactory, DataContext, this, uimdl); vmdl.RequestedKind = uimdl.RequestedKind; vmdl.RespectRequiredFilter = RespectRequiredFilter; var levmdl = FilterListEntryViewModel.Fetch(ViewModelFactory, DataContext, this, vmdl); levmdl.IsUserFilter = allowRemove; levmdl.SourceProperties = sourceProperties; // attach change events uimdl.FilterChanged += new EventHandler(delegate(object s, EventArgs a) { var f = s as FilterModel; if (f == null || !f.RefreshOnFilterChanged) { return; } if (f.IsServerSideFilter) { OnExecuteFilter(); } else { OnExecutePostFilter(); } }); _FilterViewModels.Add(vmdl); _FilterListEntryViewModels.Add(levmdl); } if (allowRemove) { UpdateRespectRequieredFilter(); } OnPropertyChanged("RespectRequiredFilter"); OnPropertyChanged("HasUserFilter"); OnPropertyChanged("Filter"); OnPropertyChanged("FilterViewModels"); OnPropertyChanged("FilterListEntryViewModels"); }
public bool RemoveFilter(IFilterModel mdl) { if (!_filter.Remove(mdl)) { return(false); } if (mdl is IUIFilterModel) { var uimdl = (IUIFilterModel)mdl; var vmdl = FilterViewModel.Fetch(ViewModelFactory, DataContext, this, uimdl); var levmdl = FilterListEntryViewModel.Fetch(ViewModelFactory, DataContext, this, vmdl); _FilterViewModels.Remove(vmdl); _FilterListEntryViewModels.Remove(levmdl); } UpdateRespectRequieredFilter(); OnPropertyChanged("RespectRequiredFilter"); OnPropertyChanged("HasUserFilter"); OnPropertyChanged("Filter"); OnPropertyChanged("FilterViewModels"); OnPropertyChanged("FilterListEntryViewModels"); return(true); }