internal void RegisterOptionControl(ColumnFilterControl ctrl) { if (!Filters.Contains(ctrl)) { ctrl.PropertyChanged += _filterHandler; Filters.Add(ctrl); } }
void filter_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "FilterChanged") { ColumnFilterControl cf = sender as ColumnFilterControl; Predicate <object> predicate = null; 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() == null ? predicate : 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 <ISelected> list = new ObservableCollection <ISelected>(); foreach (var item in CollectionView) { ISelected selectedModel = item as ISelected; //selectedModel.Num= count++; list.Add(selectedModel); } //foreach (var item in list) //{ // if (item == null) // continue; // item.Num = count++; //} 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; //} } }