protected override Size ArrangeOverride(Size finalSize) { if (GridControl.ShowBorder) { var halfBorderLineThickness = GridControl.BorderThickness / 2.0; GridBorderLines[0].StartPoint = new Point(0.0, halfBorderLineThickness); GridBorderLines[0].EndPoint = new Point(finalSize.Width, halfBorderLineThickness); GridBorderLines[1].StartPoint = new Point(0.0, finalSize.Height - halfBorderLineThickness); GridBorderLines[1].EndPoint = new Point(finalSize.Width, finalSize.Height - halfBorderLineThickness); GridBorderLines[2].StartPoint = new Point(halfBorderLineThickness, 0.0); GridBorderLines[2].EndPoint = new Point(halfBorderLineThickness, finalSize.Height); GridBorderLines[3].StartPoint = new Point(finalSize.Width - halfBorderLineThickness, 0.0); GridBorderLines[3].EndPoint = new Point(finalSize.Width - halfBorderLineThickness, finalSize.Height); } foreach (var borderLine in GridBorderLines) { borderLine.IsVisible = GridControl.ShowBorder; } double columnHeadersHeight = ColumnHeaders.Max(ch => ch.DesiredSize.Height) + GridControl.HorizontalLinesThickness; double borderThickness = GridControl.ShowBorder ? GridControl.BorderThickness : 0.0; double horizontalLineY = borderThickness + columnHeadersHeight - GridControl.HorizontalLinesThickness / 2.0; HorizontalHeaderLine.StartPoint = new Point(borderThickness, horizontalLineY); HorizontalHeaderLine.EndPoint = new Point(finalSize.Width - borderThickness, horizontalLineY); double columnHeadersWidth = borderThickness; for (int i = 0; i < ColumnHeaders.Count; i++) { var columnHeader = ColumnHeaders[i]; columnHeader.Arrange(new Rect(columnHeadersWidth, borderThickness, columnHeader.Column.Width, columnHeadersHeight)); columnHeadersWidth += columnHeader.Column.Width + GridControl.VerticalLinesThickness; double verticalLineX = columnHeadersWidth - GridControl.VerticalLinesThickness / 2.0; ColumnHeaderLines[i].StartPoint = new Point(verticalLineX, borderThickness); ColumnHeaderLines[i].EndPoint = new Point(verticalLineX, columnHeadersHeight + borderThickness); } CellsPanel.Arrange(new Rect(borderThickness, borderThickness + columnHeadersHeight, finalSize.Width - 2.0 * borderThickness, finalSize.Height - 2.0 * borderThickness - columnHeadersHeight)); return(finalSize); }