internal void RegisterOptionControl(ColumnFilterControl ctrl) { if (!Filters.Contains(ctrl)) { ctrl.PropertyChanged += _filterHandler; Filters.Add(ctrl); } }
internal void UpdateColumnOptionControl(ColumnFilterControl columnFilterControl) { //Since visibility for column contrls is set off the ColumnFilterControl by the base grid, we need to //update the ColumnOptionControl since it is a seperate object. var ctrl = _optionControls.Where(c => c.FilterColumnInfo != null && columnFilterControl.FilterColumnInfo != null && c.FilterColumnInfo.Column == columnFilterControl.FilterColumnInfo.Column).FirstOrDefault(); if (ctrl != null) { ctrl.ResetVisibility(); } }
void filter_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "FilterChanged") { ColumnFilterControl cf = sender as ColumnFilterControl; Predicate <object> predicate = null; if (!IsFilterWindow) { if (window != null) { predicate = FilterDataViewModel.Instance.FilterPredicate; window.Close(); } } else { foreach (var filter in Filters) { if (filter.HasPredicate) { if (predicate == null) { predicate = filter.GeneratePredicate(); } else { predicate = predicate.And(filter.GeneratePredicate()); } } if (cf.FilterText == null) { if (predicate == null) { predicate = filter.GeneratePredicate(); } else { predicate = predicate.And(filter.GeneratePredicate()); } } } } bool canContinue = true; var args = new CancelableFilterChangedEventArgs(predicate); if (BeforeFilterChanged != null && !IsResetting) { BeforeFilterChanged(this, args); canContinue = !args.Cancel; } if (canContinue) { ListCollectionView view = CollectionViewSource.GetDefaultView(this.ItemsSource) as ListCollectionView; if (view != null && view.IsEditingItem) { view.CommitEdit(); } if (view != null && view.IsAddingNew) { view.CommitNew(); } if (CollectionView != null) { try { CollectionView.Filter = predicate; } catch { } int count = 1; ObservableCollection <AllSelectedPropertyChanged> list = new ObservableCollection <AllSelectedPropertyChanged>(); foreach (var item in CollectionView) { AllSelectedPropertyChanged selectedModel = item as AllSelectedPropertyChanged; //selectedModel.Num= count++; list.Add(selectedModel); } foreach (var item in list) { if (item == null) { continue; } item.Num = count++; } //if(cf.FilterText!=null&& cf.FilterText.Trim() != "") //{ if (list != null && list.Count > 0) { FilterFinshItemsSource = list; if (AfterFilterChanged != null) { AfterFilterChanged(this, new FilterChangedEventArgs(predicate)); } } //} } } else { IsResetting = true; var ctrl = sender as ColumnFilterControl; ctrl.ResetControl(); IsResetting = false; } } }