diff --git a/src/Core/src/Handlers/View/ViewHandlerOfT.Tizen.cs b/src/Core/src/Handlers/View/ViewHandlerOfT.Tizen.cs index 7cacf9121581..ec36f5c438ae 100644 --- a/src/Core/src/Handlers/View/ViewHandlerOfT.Tizen.cs +++ b/src/Core/src/Handlers/View/ViewHandlerOfT.Tizen.cs @@ -61,14 +61,9 @@ public override Size GetDesiredSize(double widthConstraint, double heightConstra { var nativeView = NativeView; - if (nativeView == null || VirtualView == null) + if (nativeView == null || VirtualView == null || NativeParent == null) { - return Size.Zero; - } - - if (NativeParent == null) - { - return new Size(widthConstraint, heightConstraint); + return VirtualView == null ? Size.Zero : new Size(VirtualView.Width, VirtualView.Height); } int availableWidth = widthConstraint.ToScaledPixel(); @@ -79,9 +74,13 @@ public override Size GetDesiredSize(double widthConstraint, double heightConstra if (availableHeight < 0) availableHeight = int.MaxValue; + var explicitWidth = VirtualView.Width; + var explicitHeight = VirtualView.Height; + var hasExplicitWidth = explicitWidth >= 0; + var hasExplicitHeight = explicitHeight >= 0; + Size measured; - var nativeViewMeasurable = nativeView as IMeasurable; - if (nativeViewMeasurable != null) + if (nativeView is IMeasurable nativeViewMeasurable) { measured = nativeViewMeasurable.Measure(availableWidth, availableHeight).ToDP(); } @@ -90,7 +89,8 @@ public override Size GetDesiredSize(double widthConstraint, double heightConstra measured = Measure(availableWidth, availableHeight); } - return measured; + return new Size(hasExplicitWidth ? explicitWidth : measured.Width, + hasExplicitHeight ? explicitHeight : measured.Height); } public virtual ERect GetNativeContentGeometry()