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