protected override Size MeasureOverride(Size constraint) {
Size size = new Size();
if (this.InternalChild is UIElement child) {
child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
Size desired = child.DesiredSize;
size.Width = desired.Width * this.ZoomScale;
size.Height = desired.Height * this.ZoomScale;
}
return size;
}
protected override Size ArrangeOverride(Size arrangeSize) {
UIElement child = this.InternalChild;
if (child != null) {
Size desired = child.DesiredSize;
double left = ((arrangeSize.Width - desired.Width) / 2) + this.HorizontalOffset;
double top = ((arrangeSize.Height - desired.Height) / 2) + this.VerticalOffset;
this.InternalTransform = new ScaleTransform(this.ZoomScale, this.ZoomScale, arrangeSize.Width / 2d, arrangeSize.Height / 2d);
child.Arrange(new Rect(new Point(left, top), desired));
}
return arrangeSize;
}
protected override Size MeasureOverride(Size constraint) {
Size size = new Size();
if (this.InternalChild is UIElement child) {
child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
Size desired = child.DesiredSize;
size.Width = desired.Width * this.ZoomScale;
size.Height = desired.Height * this.ZoomScale;
}
return size;
}
protected override Size ArrangeOverride(Size arrangeSize) {
UIElement child = this.InternalChild;
if (child != null) {
Size desired = child.DesiredSize;
double left = ((arrangeSize.Width - desired.Width) / 2) + this.HorizontalOffset;
double top = ((arrangeSize.Height - desired.Height) / 2) + this.VerticalOffset;
this.InternalTransform = new ScaleTransform(this.ZoomScale, this.ZoomScale, arrangeSize.Width / 2d, arrangeSize.Height / 2d);
child.Arrange(new Rect(new Point(left, top), desired));
}
return arrangeSize;
}