private static void ControlLoaded(object sender, RoutedEventArgs e) { var itemsControl = (ItemsControl)sender; itemsControl.Loaded -= ControlLoaded; System.Windows.Controls.Primitives.GridViewRowPresenterBase gridViewRowPresenter = itemsControl.FindChild <GridViewRowPresenter>(); if (gridViewRowPresenter == null) { gridViewRowPresenter = itemsControl.FindChild <GridViewHeaderRowPresenter>(); } if (gridViewRowPresenter != null) { var columns = gridViewRowPresenter.Columns; SetOriginalColumns(gridViewRowPresenter, columns.ToList()); var columnsToHide = new List <GridViewColumn>(); foreach (var column in columns) { SetRowPresenter(column, new WeakReference(gridViewRowPresenter)); if (!column.GetIsVisible()) { columnsToHide.Add(column); } } foreach (var column in columnsToHide) { columns.Remove(column); } } }
private static List <GridViewColumn> GetOriginalColumns(this System.Windows.Controls.Primitives.GridViewRowPresenterBase presenter) { return(presenter.GetValue(OriginalColumnsProperty) as List <GridViewColumn>); }
private static void SetOriginalColumns(this System.Windows.Controls.Primitives.GridViewRowPresenterBase presenter, List <GridViewColumn> columns) { presenter.SetValue(OriginalColumnsProperty, columns); }