partial void doFilterOrEdit(UIBarButtonItem sender) { if (sender.Title.Equals("Filter")) { filterData = new List <FilterData>(); foreach (GridColumn gc in flexGrid.Columns) { filterData.Add(new FilterData { FilterColumn = gc.Binding, FilterOperation = 0, FilterString = null }); } } UIStoryboard storyboard = UIStoryboard.FromName("MainStoryboard", null); FilterSampleEditorViewController controller = (FilterSampleEditorViewController)storyboard.InstantiateViewController("FilterSampleEditor"); controller.FilterDataLoadingAction += () => { List <FilterData> newFilterData = new List <FilterData>(); for (int i = 0; i < filterData.Count; i++) { newFilterData.Add((FilterData)filterData[i].Clone()); } controller.FlexGrid.ItemsSource = newFilterData; controller.FlexGrid.IsReadOnly = false; controller.FlexGrid.ColumnHeaderFont = UIFont.BoldSystemFontOfSize(this.flexGrid.Font.PointSize); GridColumn col = controller.FlexGrid.Columns[1]; col.DataMap = new GridDataMap(FilterOperation.StandardOperations(), new NSString("Identifier"), new NSString("Title")); }; controller.FilterDataApplyAction += () => { sender.Title = "Edit"; removeFilterAction.Enabled = true; this.filterData = (List <FilterData>)controller.FlexGrid.ItemsSource; this.flexGrid.CollectionView.Filter = (object item) => { bool result = true; for (int i = 0; i < filterData.Count; i++) { FilterData thisItem = filterData[i]; GridColumn col = this.flexGrid.Columns[i]; string objStr = col.GetBoundValue(item) != null?col.GetBoundValue(item).ToString().ToLower() : null; string filterStr = thisItem.FilterString != null?thisItem.FilterString.ToLower() : null; if (filterStr != null && filterStr.Length != 0) { switch (thisItem.FilterOperation) { case 0: if (objStr == null || !objStr.Contains(filterStr)) { result = false; } break; case 1: if (objStr == null || !objStr.StartsWith(filterStr)) { result = false; } break; case 2: if (objStr == null || !objStr.EndsWith(filterStr)) { result = false; } break; case 3: if (objStr == null || !objStr.Equals(filterStr)) { result = false; } break; } } } return(result); }; }; this.NavigationController.PushViewController(controller, true); }