protected override Size ArrangeContentOverride(Rect arrangeRect) { double legendWidth = Math.Min(arrangeRect.Width, Math.Max(Math.Max(legendScrollerYUpper.DesiredSize.Width, legendScrollerYLower.DesiredSize.Width), TotalZoom100Button !.DesiredSize.Width)); double remainingWidth = arrangeRect.Width - legendWidth; double legendHeight = Math.Min(arrangeRect.Height, Math.Max(legendScrollerX.DesiredSize.Height, TotalZoom100Button.DesiredSize.Height + TotalZoomOutButton !.DesiredSize.Height)); double remainingHeight = arrangeRect.Height - legendHeight; double plotArea0Height = remainingHeight * plotAreaRatio; double plotArea1Height = remainingHeight * (1 - plotAreaRatio); legendScrollerYUpper.ArrangeBorderPadding(arrangeRect, remainingWidth, 0, legendWidth, plotArea0Height); legendScrollerYLower.ArrangeBorderPadding(arrangeRect, remainingWidth, plotArea0Height, legendWidth, plotArea1Height); legendScrollerX.ArrangeBorderPadding(arrangeRect, 0, remainingHeight, remainingWidth, legendHeight); //arrange plot-area after scrollers, which might change the values plot-area has to display plotAreaUpper.ArrangeBorderPadding(arrangeRect, 0, 0, remainingWidth, plotArea0Height); plotAreaLower.ArrangeBorderPadding(arrangeRect, 0, plotArea0Height, remainingWidth, plotArea1Height); TotalZoom100Button.ArrangeBorderPadding(arrangeRect, remainingWidth, remainingHeight, legendWidth, TotalZoom100Button.DesiredSize.Height); double zoomInOutY = remainingHeight + TotalZoom100Button.DesiredSize.Height; TotalZoomOutButton.ArrangeBorderPadding(arrangeRect, remainingWidth, zoomInOutY, TotalZoomOutButton.DesiredSize.Width, TotalZoomOutButton.DesiredSize.Height); TotalZoomInButton !.ArrangeBorderPadding(arrangeRect, arrangeRect.Width - TotalZoomInButton !.DesiredSize.Width, zoomInOutY, TotalZoomInButton.DesiredSize.Width, TotalZoomInButton.DesiredSize.Height); return(arrangeRect.Size); }
protected override Size ArrangeContentOverride(Rect arrangeRect) { double legendWidth = Math.Min(arrangeRect.Width, Math.Max( Math.Max( Math.Max( Math.Max(legendScrollerY0.DesiredSize.Width, legendScrollerY1.DesiredSize.Width), legendScrollerY2.DesiredSize.Width), legendScrollerY3.DesiredSize.Width), TotalZoom100Button !.DesiredSize.Width)); double remainingWidth = arrangeRect.Width - legendWidth; double legendHeight = Math.Min(arrangeRect.Height, Math.Max(legendScrollerX.DesiredSize.Height, TotalZoom100Button.DesiredSize.Height + TotalZoomOutButton !.DesiredSize.Height)); double remainingHeight = arrangeRect.Height - legendHeight; double plotArea0Height = remainingHeight * heightRatio0; double plotArea1Height = remainingHeight * heightRatio1; double plotArea2Height = remainingHeight * heightRatio2; double plotArea3Height = remainingHeight * heightRatio3; var y = 0.0; legendScrollerY0.ArrangeBorderPadding(arrangeRect, remainingWidth, y, legendWidth, plotArea0Height); y += plotArea0Height; legendScrollerY1.ArrangeBorderPadding(arrangeRect, remainingWidth, y, legendWidth, plotArea1Height); y += plotArea1Height; legendScrollerY2.ArrangeBorderPadding(arrangeRect, remainingWidth, y, legendWidth, plotArea2Height); y += plotArea2Height; legendScrollerY3.ArrangeBorderPadding(arrangeRect, remainingWidth, y, legendWidth, plotArea3Height); legendScrollerX.ArrangeBorderPadding(arrangeRect, 0, remainingHeight, remainingWidth, legendHeight); //arrange plot-area after scrollers, which might change the values plot-area has to display y = 0.0; plotArea0.ArrangeBorderPadding(arrangeRect, 0, y, remainingWidth, plotArea0Height); y += plotArea0Height; plotArea1.ArrangeBorderPadding(arrangeRect, 0, y, remainingWidth, plotArea1Height); y += plotArea1Height; plotArea2.ArrangeBorderPadding(arrangeRect, 0, y, remainingWidth, plotArea2Height); y += plotArea2Height; plotArea3.ArrangeBorderPadding(arrangeRect, 0, y, remainingWidth, plotArea3Height); TotalZoom100Button.ArrangeBorderPadding(arrangeRect, remainingWidth, remainingHeight, legendWidth, TotalZoom100Button.DesiredSize.Height); double zoomInOutY = remainingHeight + TotalZoom100Button.DesiredSize.Height; TotalZoomOutButton.ArrangeBorderPadding(arrangeRect, remainingWidth, zoomInOutY, TotalZoomOutButton.DesiredSize.Width, TotalZoomOutButton.DesiredSize.Height); TotalZoomInButton !.ArrangeBorderPadding(arrangeRect, arrangeRect.Width - TotalZoomInButton !.DesiredSize.Width, zoomInOutY, TotalZoomInButton.DesiredSize.Width, TotalZoomInButton.DesiredSize.Height); return(arrangeRect.Size); }