public class PlotPanel : Panel
// Override the default Measure method of Panel
protected override Size MeasureOverride(Size availableSize)
var panelDesiredSize = new Size();
// In our example, we just have one child.
// Report that our panel requires just the size of its only child.
foreach (var child in Children)
child.Measure(availableSize);
panelDesiredSize = child.DesiredSize;
protected override Size ArrangeOverride(Size finalSize)
foreach (var child in Children)
child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
return finalSize; // Returns the final Arranged size