Example #1
0
        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);
        }
Example #2
0
        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();
        }
Example #3
0
        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;
        }
Example #4
0
        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;
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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;
                }
            }
        }