Explorar o código

Merge branch 'master' into feature/data-grid-custom-sorting

Dariusz Komosiński %!s(int64=5) %!d(string=hai) anos
pai
achega
3353a92d4d
Modificáronse 1 ficheiros con 34 adicións e 2 borrados
  1. 34 2
      src/Avalonia.Controls/ScrollViewer.cs

+ 34 - 2
src/Avalonia.Controls/ScrollViewer.cs

@@ -448,6 +448,38 @@ namespace Avalonia.Controls
             Offset += new Vector(_smallChange.Width, 0);
         }
 
+        /// <summary>
+        /// Scrolls the content upward by one page.
+        /// </summary>
+        public void PageUp()
+        {
+            VerticalScrollBarValue = Math.Max(_offset.Y - _viewport.Height, 0);
+        }
+
+        /// <summary>
+        /// Scrolls the content downward by one page.
+        /// </summary>
+        public void PageDown()
+        {
+            VerticalScrollBarValue = Math.Min(_offset.Y + _viewport.Height, VerticalScrollBarMaximum);
+        }
+
+        /// <summary>
+        /// Scrolls the content left by one page.
+        /// </summary>
+        public void PageLeft()
+        {
+            HorizontalScrollBarValue = Math.Max(_offset.X - _viewport.Width, 0);
+        }
+
+        /// <summary>
+        /// Scrolls the content tight by one page.
+        /// </summary>
+        public void PageRight()
+        {
+            HorizontalScrollBarValue = Math.Min(_offset.X + _viewport.Width, HorizontalScrollBarMaximum);
+        }
+
         /// <summary>
         /// Scrolls to the top-left corner of the content.
         /// </summary>
@@ -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;
             }
         }