コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
 private static List <GridViewColumn> GetOriginalColumns(this System.Windows.Controls.Primitives.GridViewRowPresenterBase presenter)
 {
     return(presenter.GetValue(OriginalColumnsProperty) as List <GridViewColumn>);
 }
コード例 #3
0
 private static void SetOriginalColumns(this System.Windows.Controls.Primitives.GridViewRowPresenterBase presenter, List <GridViewColumn> columns)
 {
     presenter.SetValue(OriginalColumnsProperty, columns);
 }