protected override Size MeasureOverride(Size availableSize) { double doubleBorderThickness = GridControl.ShowBorder ? GridControl.BorderThickness * 2.0 : 0.0; double columnHeadersHeight = 0.0; foreach (var columnHeader in ColumnHeaders) { columnHeader.Measure(new Size(availableSize.Width - doubleBorderThickness, Double.PositiveInfinity)); columnHeadersHeight = Math.Max(columnHeadersHeight, columnHeader.DesiredSize.Height); } columnHeadersHeight += GridControl.HorizontalLinesThickness; double columnHeadersWidth = ColumnHeaders.Sum(ch => ch.Column.Width + GridControl.VerticalLinesThickness); //TODO check negative height CellsPanel.Measure(new Size(availableSize.Width - doubleBorderThickness, availableSize.Height - doubleBorderThickness - columnHeadersHeight)); return(new Size(columnHeadersWidth + doubleBorderThickness, columnHeadersHeight + CellsPanel.DesiredSize.Height + doubleBorderThickness)); }