Beispiel #1
0
        protected virtual float[] MeasureCells(
            GridViewRowInfo row,
            List <GridViewDataColumn> columns,
            float[] widths)
        {
            IVirtualizedElementProvider <GridViewColumn>  elementProvider1 = this.tableElement.ColumnScroller.ElementProvider;
            IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.tableElement.RowScroller.ElementProvider;

            if (this.CanBestFitRow(row))
            {
                GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement;
                element1.InitializeRowView(this.TableElement);
                this.TableElement.Children.Add((RadElement)element1);
                element1.Initialize(row);
                for (int index = 0; index < columns.Count; ++index)
                {
                    if (columns[index].IsVisible && columns[index].AutoSizeMode != BestFitColumnMode.None)
                    {
                        GridCellElement element2 = elementProvider1.GetElement((GridViewColumn)columns[index], (object)element1) as GridCellElement;
                        element1.Children.Add((RadElement)element2);
                        element2.Initialize((GridViewColumn)columns[index], element1);
                        element2.SetContent();
                        element2.UpdateInfo();
                        (element2 as GridHeaderCellElement)?.UpdateArrowState();
                        element2.ResetLayout(true);
                        widths[index] = Math.Max(widths[index], this.GetCellDesiredWidth(element2));
                        element1.Children.Remove((RadElement)element2);
                        this.Detach(elementProvider1, element2);
                    }
                }
                this.TableElement.Children.Remove((RadElement)element1);
                this.Detach(elementProvider2, element1);
            }
            return(widths);
        }
        protected virtual float CalculateColumnWidth(
            ListViewDetailColumn column,
            ListViewBestFitColumnMode mode)
        {
            IVirtualizedElementProvider <ListViewDataItem> elementProvider = this.DetailListView.Scroller.ElementProvider;
            float val1 = 0.0f;

            if (mode == ListViewBestFitColumnMode.HeaderCells || mode == ListViewBestFitColumnMode.AllCells)
            {
                DetailListViewHeaderCellElement element = this.DetailListView.ColumnScroller.ElementProvider.GetElement(column, (object)null) as DetailListViewHeaderCellElement;
                this.DetailListView.ColumnContainer.Children.Add((RadElement)element);
                element.Attach(column, (object)null);
                element.ResetLayout(true);
                val1 = Math.Max(val1, this.GetCellDesiredWidth((DetailListViewCellElement)element));
                this.DetailListView.ColumnContainer.Children.Remove((RadElement)element);
                this.Detach(this.DetailListView.ColumnScroller.ElementProvider, (DetailListViewCellElement)element);
                if (mode == ListViewBestFitColumnMode.HeaderCells)
                {
                    return(val1);
                }
            }
            IEnumerator <ListViewDataItem> enumerator = (IEnumerator <ListViewDataItem>)null;

            if (mode == ListViewBestFitColumnMode.DataCells || mode == ListViewBestFitColumnMode.AllCells)
            {
                enumerator = (IEnumerator <ListViewDataItem>) new ListViewTraverser(this.DetailListView.Owner);
            }
            enumerator.Reset();
            while (enumerator.MoveNext())
            {
                ListViewDataItem current = enumerator.Current;
                if (this.CanBestFitItem(current))
                {
                    DetailListViewVisualItem element1 = elementProvider.GetElement(current, (object)null) as DetailListViewVisualItem;
                    element1.Attach(current, (object)null);
                    this.DetailListView.ColumnContainer.Children.Add((RadElement)element1);
                    IVirtualizedElementProvider <ListViewDetailColumn> cellElementProvider = (IVirtualizedElementProvider <ListViewDetailColumn>) new DetailListViewDataCellElementProvider(element1);
                    DetailListViewCellElement element2 = cellElementProvider.GetElement(column, (object)element1) as DetailListViewCellElement;
                    element1.Children.Add((RadElement)element2);
                    element2.Attach(column, (object)element1);
                    element2.ResetLayout(true);
                    val1 = Math.Max(val1, this.GetCellDesiredWidth(element2));
                    element1.Children.Remove((RadElement)element2);
                    this.DetailListView.ColumnContainer.Children.Remove((RadElement)element1);
                    this.Detach(cellElementProvider, element2);
                    this.Detach(elementProvider, element1);
                }
            }
            return(val1);
        }
Beispiel #3
0
        protected internal virtual int GetDataRowHeight(
            GridViewRowInfo row,
            TableViewRowLayoutBase rowLayout)
        {
            if (!this.GridView.AutoSizeRows)
            {
                return(rowLayout.GetRowHeight(row));
            }
            IVirtualizedElementProvider <GridViewColumn>  elementProvider1 = this.GridView.TableElement.ColumnScroller.ElementProvider;
            IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.GridView.TableElement.RowScroller.ElementProvider;
            float          val1     = 0.0f;
            GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement;

            element1.InitializeRowView(this.GridView.TableElement);
            element1.Initialize(row);
            this.GridView.TableElement.Children.Add((RadElement)element1);
            if (row is GridViewGroupRowInfo)
            {
                GridGroupHeaderRowElement headerRowElement = element1 as GridGroupHeaderRowElement;
                headerRowElement.Measure(new SizeF(rowLayout.DesiredSize.Width, float.PositiveInfinity));
                val1 = Math.Max(val1, headerRowElement.DesiredSize.Height);
            }
            else
            {
                foreach (GridViewColumn column in (Collection <GridViewDataColumn>)row.ViewTemplate.Columns)
                {
                    if (!(column is GridViewRowHeaderColumn) && !(column is GridViewIndentColumn) && column.IsVisible)
                    {
                        GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement;
                        element1.Children.Add((RadElement)element2);
                        element2.Initialize(column, element1);
                        element2.SetContent();
                        element2.UpdateInfo();
                        (element2 as GridHeaderCellElement)?.UpdateArrowState();
                        element2.ResetLayout(true);
                        val1 = Math.Max(val1, this.GetCellDesiredSize(element2).Height);
                        element1.Children.Remove((RadElement)element2);
                        this.Detach(elementProvider1, element2);
                    }
                }
            }
            this.GridView.TableElement.Children.Remove((RadElement)element1);
            this.Detach(elementProvider2, element1);
            return((int)val1);
        }
Beispiel #4
0
        private void BestFitGroupColumn(
            GridViewGroupColumn column,
            bool bestFitChildColumns,
            BestFitColumnMode?mode)
        {
            GridTableHeaderRowElement headerRowElement = this.GetHeaderRowElement();
            IVirtualizedElementProvider <GridViewColumn> elementProvider = this.tableElement.ColumnScroller.ElementProvider;
            ColumnGroupRowLayout rowLayout = this.tableElement.ViewElement.RowLayout as ColumnGroupRowLayout;

            if (rowLayout == null || headerRowElement == null)
            {
                return;
            }
            GridColumnGroupCellElement element = elementProvider.GetElement((GridViewColumn)column, (object)headerRowElement) as GridColumnGroupCellElement;

            if (element == null || !element.CanBestFit(column.AutoSizeMode))
            {
                return;
            }
            float num = this.MeasureCell((GridRowElement)headerRowElement, (GridViewColumn)column, element);

            this.Detach(elementProvider, (GridCellElement)element);
            ColumnGroupsCellArrangeInfo columnData = rowLayout.GetColumnData((GridViewColumn)column);

            if ((double)columnData.Bounds.Width < (double)num)
            {
                rowLayout.StartColumnResize((GridViewColumn)column);
                rowLayout.ResizeColumn((int)((double)num - (double)columnData.Bounds.Width));
                rowLayout.InvalidateLayout();
                this.TableElement.ViewElement.InvalidateMeasure(true);
                this.TableElement.ViewElement.UpdateLayout();
                rowLayout.EndColumnResize();
            }
            if (!bestFitChildColumns)
            {
                return;
            }
            foreach (GridViewColumn dataColumn in this.GetDataColumns(column.Group))
            {
                this.BestFitColumnCore(dataColumn, mode.HasValue ? mode.Value : column.AutoSizeMode);
            }
        }
Beispiel #5
0
        protected virtual float MeasureCell(
            GridViewRowInfo row,
            GridViewColumn column,
            BestFitColumnMode mode)
        {
            float val1 = 0.0f;
            IVirtualizedElementProvider <GridViewColumn>  elementProvider1 = this.tableElement.ColumnScroller.ElementProvider;
            IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.tableElement.RowScroller.ElementProvider;

            if (this.CanBestFitRow(row))
            {
                GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement;
                element1.InitializeRowView(this.TableElement);
                this.TableElement.Children.Add((RadElement)element1);
                element1.Initialize(row);
                GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement;
                if (!element2.CanBestFit(mode))
                {
                    this.Detach(elementProvider1, element2);
                    this.Detach(elementProvider2, element1);
                    return(val1);
                }
                element1.Children.Add((RadElement)element2);
                element2.Initialize(column, element1);
                element2.SetContent();
                element2.UpdateInfo();
                (element2 as GridHeaderCellElement)?.UpdateArrowState();
                element2.ResetLayout(true);
                val1 = Math.Max(val1, this.GetCellDesiredWidth(element2));
                element1.Children.Remove((RadElement)element2);
                this.TableElement.Children.Remove((RadElement)element1);
                this.Detach(elementProvider1, element2);
                this.Detach(elementProvider2, element1);
            }
            return(val1);
        }