protected override void OnSizeAllocated(Gdk.Rectangle allocation) { base.OnSizeAllocated(allocation); double width, height, translationX, translationY; Rectangle bounds = Element.Bounds; translationX = Element.TranslationX; translationY = Element.TranslationY; width = bounds.Width >= -1 ? bounds.Width : 0; height = bounds.Height >= -1 ? bounds.Height : 0; Container.SetSize(width, height); Container.MoveTo((int)bounds.X + translationX, (int)bounds.Y + translationY); for (var i = 0; i < ElementController.LogicalChildren.Count; i++) { var child = ElementController.LogicalChildren[i] as VisualElement; if (child != null) { var renderer = Platform.GetRenderer(child); if (renderer != null) { width = child.Bounds.Width >= -1 ? child.Bounds.Width : 0; height = child.Bounds.Height >= -1 ? child.Bounds.Height : 0; translationX = child.TranslationX; translationY = child.TranslationY; renderer.Container.SetSize(width, height); renderer.Container.MoveTo(child.Bounds.X + translationX, child.Bounds.Y + translationY); } } } }