protected override Size ArrangeOverride(Size arrangeBounds) { InitializeChildrens(); double x = indent; double w = arrangeBounds.Width; double h = arrangeBounds.Height; var size = expander.DesiredSize; expander.Arrange(new Rect(x, (h - size.Height) / 2, size.Width, size.Height)); x += size.Width; if (!icon.ImageReference.IsDefault) { size = icon.DesiredSize; icon.Arrange(new Rect(x, (h - size.Height) / 2, size.Width, size.Height)); x += size.Width; } size = content.DesiredSize; content.Arrange(new Rect(x, (h - size.Height) / 2, size.Width, size.Height)); x += size.Width; return(new Size(x, h)); }