protected override void OnOpened(EventArgs e) { base.OnOpened(e); _grid = this.GetVisualParent<CustomDataGrid>(); var header = this.GetVisualParent<DataGridColumnHeader>(); _column = header.Column; var listCollectionView = _grid.Items.SourceCollection as ListCollectionView; if (listCollectionView != null && (listCollectionView.IsAddingNew || listCollectionView.IsEditingItem)) { IsOpen = false; return; } if (GetFiltersContainer(_grid) == null) { var container = new FiltersContainer(); SetFiltersContainer(_grid, container); } if (_column == null) return; var itemsOfSourceCollection = ((ListCollectionView) _grid.Items.SourceCollection).SourceCollection.Cast<object>(); var namesCollection = GetNamesOfItemsFromSourceCollection(itemsOfSourceCollection); if (namesCollection == null) return; var filterItems = namesCollection.ConvertAll(r => new FilterItem(r) {IsChecked = true}); ResetToLastSelectedItemsOfFiltering(filterItems); FilterItems = CollectionViewSource.GetDefaultView(filterItems); FilterItems.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); SearchContent = ""; }
private void MakeFilter(FiltersContainer container) { var listCollectionView = ((ListCollectionView) _grid.Items.SourceCollection); listCollectionView.CustomSort = null; _grid.Columns.ToList().ForEach(r => r.SortDirection = null); _grid.Items.Filter += container.MakeFilterOnGrid; }
public static void SetFiltersContainer(DataGrid grid, FiltersContainer value) { grid.SetValue(FiltersContainerProperty, value); }