protected override Size OnArrange(Size finalSize) { int scrollAreaWidth = finalSize.Width - Padding.Left - Padding.Right; int scrollAreaHeight = finalSize.Height - Padding.Top - Padding.Bottom; if (!m_VerticalScrollBar.IsCollapsed && !m_HorizontalScrollBar.IsCollapsed) { m_VerticalScrollBar.Arrange(new Rectangle(finalSize.Width - Padding.Right - m_VerticalScrollBar.MeasuredSize.Width, Padding.Top, m_VerticalScrollBar.MeasuredSize.Width, m_VerticalScrollBar.MeasuredSize.Height)); scrollAreaWidth -= m_VerticalScrollBar.MeasuredSize.Width; m_HorizontalScrollBar.Arrange(new Rectangle(Padding.Left, finalSize.Height - Padding.Bottom - m_HorizontalScrollBar.MeasuredSize.Height, m_HorizontalScrollBar.MeasuredSize.Width, m_HorizontalScrollBar.MeasuredSize.Height)); scrollAreaHeight -= m_HorizontalScrollBar.MeasuredSize.Height; } else if (!m_VerticalScrollBar.IsCollapsed) { m_VerticalScrollBar.Arrange(new Rectangle(finalSize.Width - Padding.Right - m_VerticalScrollBar.MeasuredSize.Width, Padding.Top, m_VerticalScrollBar.MeasuredSize.Width, m_VerticalScrollBar.MeasuredSize.Height)); scrollAreaWidth -= m_VerticalScrollBar.MeasuredSize.Width; } else if (!m_HorizontalScrollBar.IsCollapsed) { m_HorizontalScrollBar.Arrange(new Rectangle(Padding.Left, finalSize.Height - Padding.Bottom - m_HorizontalScrollBar.MeasuredSize.Height, m_HorizontalScrollBar.MeasuredSize.Width, m_HorizontalScrollBar.MeasuredSize.Height)); scrollAreaHeight -= m_HorizontalScrollBar.MeasuredSize.Height; } m_ScrollArea.Arrange(new Rectangle(Padding.Left, Padding.Top, scrollAreaWidth, scrollAreaHeight)); UpdateScrollBars(); return(finalSize); }