public void SetFilterState(GridViewColumnHeader header, IComparable value, bool isChecked) { GridViewColumnWithFilterAndSorter column = GetColumnFilters(header); bool found = false; foreach (var filterItem in column.FilterItems) { if (filterItem.Item.Equals(value)) { found = true; filterItem.IsChecked = isChecked; break;; } } //if (found==false) //{ // ReBuildFiltersList(column.SortPropertyName, column.FilterItems); // foreach (var filterItem in column.FilterItems) // { // if (filterItem.Item.Equals(value)) // { // found = true; // filterItem.IsChecked = isChecked; // break; ; // } // } //} FilterColumn(header); }
private void FilterColumn(GridViewColumnHeader header) { GridViewColumnWithFilterAndSorter column = (GridViewColumnWithFilterAndSorter)header.Column; String currentFilterProperty = column.SortPropertyName; bool hasFilter = false; if (column.FilterItems == null) { if (currentFilters.ContainsKey(currentFilterProperty)) { currentFilters.Remove(currentFilterProperty); } } else { foreach (var filterItem in column.FilterItems) { if (filterItem.IsChecked) { if (!currentFilters.ContainsKey(currentFilterProperty)) { currentFilters[currentFilterProperty] = new List <object>(); } currentFilters[currentFilterProperty].Add(filterItem.ItemView); hasFilter = true; } else { if (currentFilters.ContainsKey(currentFilterProperty)) { currentFilters[currentFilterProperty].Remove(filterItem.ItemView); } } } } // find the button and apply the active style Button button = (Button)BaseWPFHelpers.FindVisualElement(header, "filterButton"); if (hasFilter) { button.ContentTemplate = (DataTemplate)dictionary["filterButtonActiveTemplate"]; if (FilterButtonActiveStyle != null) { button.Style = FilterButtonActiveStyle; } } else { currentFilters.Remove(currentFilterProperty); button.ContentTemplate = (DataTemplate)dictionary["filterButtonInactiveTemplate"]; if (FilterButtonActiveStyle != null) { button.Style = FilterButtonActiveStyle; } } ApplyCurrentFilters(); }
private void RefreshItemsCommand(object sender, ExecutedRoutedEventArgs e) { GridViewColumnHeader header = (GridViewColumnHeader)BaseWPFHelpers.FindElementOfTypeUp((MenuItem)e.OriginalSource, typeof(GridViewColumnHeader)); Popup popup = (Popup)BaseWPFHelpers.FindElementOfType(header, typeof(Popup)); GridViewColumnWithFilterAndSorter column = (GridViewColumnWithFilterAndSorter)header.Column; ReBuildFiltersList(column.SortPropertyName, (ObservableCollection <FilterItem>)popup.DataContext); //popup.IsOpen = false; }
private void RemoveFiltersCommand(object sender, ExecutedRoutedEventArgs e) { GridViewColumnHeader header = (GridViewColumnHeader)BaseWPFHelpers.FindElementOfTypeUp((MenuItem)e.OriginalSource, typeof(GridViewColumnHeader)); GridViewColumnWithFilterAndSorter column = (GridViewColumnWithFilterAndSorter)header.Column; Popup popup = (Popup)BaseWPFHelpers.FindElementOfType(header, typeof(Popup)); //foreach (var filterItem in column.FilterItems) //{ // filterItem.IsChecked = false; //} column.FilterItems = null; popup.IsOpen = false; }
private GridViewColumnWithFilterAndSorter GetColumnFilters(GridViewColumnHeader header) { GridViewColumnWithFilterAndSorter column = (GridViewColumnWithFilterAndSorter)header.Column; String propertyName = column.SortPropertyName; // clear the previous filter if (column.FilterItems == null) { column.FilterItems = new ObservableCollection <FilterItem>(); ReBuildFiltersList(propertyName, column.FilterItems); } CollectionViewSource.GetDefaultView(column.FilterItems).Refresh(); return(column); }
/// <summary> /// Handles the ShowFilter command to populate the filter list and display the popup /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ShowFilterCommand(object sender, ExecutedRoutedEventArgs e) { Button button = e.OriginalSource as Button; if (button != null) { // navigate up to the header GridViewColumnHeader header = (GridViewColumnHeader)BaseWPFHelpers.FindElementOfTypeUp(button, typeof(GridViewColumnHeader)); // then down to the popup Popup popup = (Popup)BaseWPFHelpers.FindElementOfType(header, typeof(Popup)); if (popup != null) { // find the property name that we are filtering GridViewColumnWithFilterAndSorter column = GetColumnFilters(header); // open the popup to display this list popup.Closed += new EventHandler(popup_Closed); popup.DataContext = column.FilterItems; popup.IsOpen = true; } } }