diff --git a/src/Avalonia.Controls/ScrollViewer.cs b/src/Avalonia.Controls/ScrollViewer.cs
index 4600301410..6b75149d62 100644
--- a/src/Avalonia.Controls/ScrollViewer.cs
+++ b/src/Avalonia.Controls/ScrollViewer.cs
@@ -448,6 +448,38 @@ namespace Avalonia.Controls
Offset += new Vector(_smallChange.Width, 0);
}
+ ///
+ /// Scrolls the content upward by one page.
+ ///
+ public void PageUp()
+ {
+ VerticalScrollBarValue = Math.Max(_offset.Y - _viewport.Height, 0);
+ }
+
+ ///
+ /// Scrolls the content downward by one page.
+ ///
+ public void PageDown()
+ {
+ VerticalScrollBarValue = Math.Min(_offset.Y + _viewport.Height, VerticalScrollBarMaximum);
+ }
+
+ ///
+ /// Scrolls the content left by one page.
+ ///
+ public void PageLeft()
+ {
+ HorizontalScrollBarValue = Math.Max(_offset.X - _viewport.Width, 0);
+ }
+
+ ///
+ /// Scrolls the content tight by one page.
+ ///
+ public void PageRight()
+ {
+ HorizontalScrollBarValue = Math.Min(_offset.X + _viewport.Width, HorizontalScrollBarMaximum);
+ }
+
///
/// Scrolls to the top-left corner of the content.
///
@@ -623,12 +655,12 @@ namespace Avalonia.Controls
{
if (e.Key == Key.PageUp)
{
- VerticalScrollBarValue = Math.Max(_offset.Y - _viewport.Height, 0);
+ PageUp();
e.Handled = true;
}
else if (e.Key == Key.PageDown)
{
- VerticalScrollBarValue = Math.Min(_offset.Y + _viewport.Height, VerticalScrollBarMaximum);
+ PageDown();
e.Handled = true;
}
}