diff --git a/Perspex.Controls/Presenters/ScrollContentPresenter.cs b/Perspex.Controls/Presenters/ScrollContentPresenter.cs index e92f5f846b..c79ba3f753 100644 --- a/Perspex.Controls/Presenters/ScrollContentPresenter.cs +++ b/Perspex.Controls/Presenters/ScrollContentPresenter.cs @@ -95,7 +95,10 @@ namespace Perspex.Controls.Presenters if (child != null) { - child.Arrange(new Rect((Point)(-this.Offset), finalSize)); + var size = new Size( + Math.Max(finalSize.Width, child.DesiredSize.Width), + Math.Max(finalSize.Height, child.DesiredSize.Height)); + child.Arrange(new Rect((Point)(-this.Offset), size)); return finalSize; } diff --git a/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj b/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj index 27a2f7e59f..6e5388ae84 100644 --- a/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj +++ b/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj @@ -92,7 +92,7 @@ - + diff --git a/Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs b/Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs similarity index 94% rename from Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs rename to Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs index b0822ba872..5bc702fc10 100644 --- a/Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs +++ b/Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs @@ -4,7 +4,7 @@ // // ----------------------------------------------------------------------- -namespace Perspex.Controls.UnitTests +namespace Perspex.Controls.UnitTests.Presenters { using System; using System.Collections.Generic; @@ -113,14 +113,10 @@ namespace Perspex.Controls.UnitTests [Fact] public void Content_Can_Be_Larger_Than_Viewport() { - Border content; + TestControl content; var target = new ScrollContentPresenter { - Content = (content = new Border - { - Width = 150, - Height = 150, - }), + Content = (content = new TestControl()), }; target.Measure(new Size(100, 100)); @@ -184,5 +180,13 @@ namespace Perspex.Controls.UnitTests Assert.True(target.IsMeasureValid); Assert.False(target.IsArrangeValid); } + + private class TestControl : Control + { + protected override Size MeasureOverride(Size availableSize) + { + return new Size(150, 150); + } + } } } \ No newline at end of file