protected override Geometry GetOrCreateBoxGeometry(Size renderSize) { var ellipse = Ellipse.CreateFromSize(renderSize); this.SetCurrentValue(EllipseProperty, ellipse); if (ellipse.RadiusX <= 0 || ellipse.RadiusY <= 0) { return(Geometry.Empty); } if (this.BoxGeometry is EllipseGeometry) { return(this.BoxGeometry); } var geometry = new EllipseGeometry(); geometry.Bind(EllipseGeometry.CenterProperty) .OneWayTo(this, EllipseProperty, EllipseCenterConverter.Default); geometry.Bind(EllipseGeometry.RadiusXProperty) .OneWayTo(this, EllipseProperty, EllipseRadiusXConverter.Default); geometry.Bind(EllipseGeometry.RadiusYProperty) .OneWayTo(this, EllipseProperty, EllipseRadiusYConverter.Default); return(geometry); }