Beispiel #1
0
 internal void RegisterOptionControl(ColumnFilterControl ctrl)
 {
     if (!Filters.Contains(ctrl))
     {
         ctrl.PropertyChanged += _filterHandler;
         Filters.Add(ctrl);
     }
 }
Beispiel #2
0
        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;
                //}
            }
        }