Exemplo n.º 1
0
        /// <summary>
        /// Arranges (positions and determines size) of row of data in a TreeView ListView</summary>
        /// <param name="arrangeSize">Row's final size</param>
        /// <returns>Row's final size</returns>
        protected override Size ArrangeOverride(Size arrangeSize)
        {
            Size s = base.ArrangeOverride(arrangeSize);

            if (this.Columns == null || this.Columns.Count == 0)
            {
                return(s);
            }

            UIElement expander = this.Expander;
            double    current  = 0;
            double    max      = arrangeSize.Width;

            for (int x = 0; x < this.Columns.Count; x++)
            {
                GridViewColumn column = this.Columns[x];

                // Actual index needed for column reorder
                UIElement uiColumn = (UIElement)base.GetVisualChild((int)ActualIndexProperty.GetValue(column, null));

                // Compute column width
                double w = Math.Min(max, (Double.IsNaN(column.Width)) ? (double)DesiredWidthProperty.GetValue(column, null) : column.Width);

                // First column indent
                if (x == 0 && expander != null)
                {
                    double indent = FirstColumnIndent + expander.DesiredSize.Width;
                    uiColumn.Arrange(new Rect(current + indent, 0, Math.Max(0, w - indent), arrangeSize.Height));
                }
                else
                {
                    uiColumn.Arrange(new Rect(current, 0, w, arrangeSize.Height));
                }

                max     -= w;
                current += w;
            }

            // Show expander
            if (expander != null)
            {
                expander.Arrange(new Rect(this.FirstColumnIndent, 0, expander.DesiredSize.Width, expander.DesiredSize.Height));
            }

            return(s);
        }
Exemplo n.º 2
0
 set => SetValue(DesiredWidthProperty, value);