/// <summary> /// Handles the button click on the ok button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, RoutedEventArgs e) { Button btnOk = (Button)sender; ListView filterListView = (ListView)btnOk.Tag; // navigate up to the header to obtain the filter property name GridViewColumnHeader header = (GridViewColumnHeader)UIHelpers.FindElementOfTypeUp(filterListView, typeof(GridViewColumnHeader)); SortableGridViewColumn column = (SortableGridViewColumn)header.Column; String currentFilterProperty = column.SortPropertyName; var items = new List <FilterItem>(); foreach (object o in filterListView.Items) { var item = (FilterItem)o; if (item.IsChecked) { items.Add(item); } } if (items.Exists(i => i.ItemView.Equals("Clear"))) { if (currentFilters.ContainsKey(currentFilterProperty)) { FilterStruct filter = (FilterStruct)currentFilters[currentFilterProperty]; filter.button.ContentTemplate = (DataTemplate)dictionary["filterButtonInactiveTemplate"]; if (FilterButtonInactiveStyle != null) { filter.button.Style = FilterButtonInactiveStyle; } currentFilters.Remove(currentFilterProperty); } ApplyCurrentFilters(); } else { // find the button and apply the active style Button button = (Button)UIHelpers.FindVisualElement(header, "filterButton"); button.ContentTemplate = (DataTemplate)dictionary["filterButtonActiveTemplate"]; if (FilterButtonActiveStyle != null) { button.Style = FilterButtonActiveStyle; } AddFilters(currentFilterProperty, items.ToArray(), button); ApplyCurrentFilters(); } // navigate up to the popup and close it Popup popup = (Popup)UIHelpers.FindElementOfTypeUp(filterListView, typeof(Popup)); popup.IsOpen = false; }
/// <summary> /// Handles the selection change event from the filter popup /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SelectionChangedHandler(object sender, SelectionChangedEventArgs e) { // obtain the term to filter for ListView filterListView = (ListView)sender; FilterItem filterItem = (FilterItem)filterListView.SelectedItem; // navigate up to the header to obtain the filter property name GridViewColumnHeader header = (GridViewColumnHeader)UIHelpers.FindElementOfTypeUp(filterListView, typeof(GridViewColumnHeader)); SortableGridViewColumn column = (SortableGridViewColumn)header.Column; String currentFilterProperty = column.SortPropertyName; if (filterItem == null) { return; } // determine whether to clear the filter for this column if (filterItem.ItemView.Equals("Clear")) { if (currentFilters.ContainsKey(currentFilterProperty)) { FilterStruct filter = (FilterStruct)currentFilters[currentFilterProperty]; filter.button.ContentTemplate = (DataTemplate)dictionary["filterButtonInactiveTemplate"]; if (FilterButtonInactiveStyle != null) { filter.button.Style = FilterButtonInactiveStyle; } currentFilters.Remove(currentFilterProperty); } ApplyCurrentFilters(); } else { // find the button and apply the active style Button button = (Button)UIHelpers.FindVisualElement(header, "filterButton"); button.ContentTemplate = (DataTemplate)dictionary["filterButtonActiveTemplate"]; if (FilterButtonActiveStyle != null) { button.Style = FilterButtonActiveStyle; } AddFilter(currentFilterProperty, filterItem, button); ApplyCurrentFilters(); } // navigate up to the popup and close it Popup popup = (Popup)UIHelpers.FindElementOfTypeUp(filterListView, typeof(Popup)); popup.IsOpen = false; }