This commit is contained in:
ShrlAlgo
2025-07-11 09:20:23 +08:00
parent c7b104f44f
commit 4d35cadb56
840 changed files with 102347 additions and 11595 deletions

View File

@@ -9,9 +9,9 @@ namespace WPFluent.Controls;
public class SmoothScrollViewer : ScrollViewer
{
private double _totalVerticalOffset;
private double _totalHorizontalOffset;
private bool _isRunning;
private double totalVerticalOffset;
private double totalHorizontalOffset;
private bool isRunning;
public static readonly DependencyProperty OrientationProperty =
DependencyProperty.Register(nameof(Orientation), typeof(Orientation), typeof(SmoothScrollViewer), new PropertyMetadata(Orientation.Vertical));
@@ -56,10 +56,10 @@ public class SmoothScrollViewer : ScrollViewer
}
else
{
_totalHorizontalOffset = HorizontalOffset;
totalHorizontalOffset = HorizontalOffset;
CurrentHorizontalOffset = HorizontalOffset;
_totalHorizontalOffset = Math.Min(Math.Max(0d, _totalHorizontalOffset - e.Delta), ScrollableWidth);
CurrentHorizontalOffset = _totalHorizontalOffset;
totalHorizontalOffset = Math.Min(Math.Max(0d, totalHorizontalOffset - e.Delta), ScrollableWidth);
CurrentHorizontalOffset = totalHorizontalOffset;
}
return;
@@ -69,33 +69,33 @@ public class SmoothScrollViewer : ScrollViewer
if (Orientation == Orientation.Vertical)
{
if (!_isRunning)
if (!isRunning)
{
_totalVerticalOffset = VerticalOffset;
totalVerticalOffset = VerticalOffset;
CurrentVerticalOffset = VerticalOffset;
}
_totalVerticalOffset = Math.Min(Math.Max(0d, _totalVerticalOffset - e.Delta), ScrollableHeight);
ScrollToVerticalOffsetWithAnimation(_totalVerticalOffset);
totalVerticalOffset = Math.Min(Math.Max(0d, totalVerticalOffset - e.Delta), ScrollableHeight);
ScrollToVerticalOffsetWithAnimation(totalVerticalOffset);
}
else
{
if (!_isRunning)
if (!isRunning)
{
_totalHorizontalOffset = HorizontalOffset;
totalHorizontalOffset = HorizontalOffset;
CurrentHorizontalOffset = HorizontalOffset;
}
_totalHorizontalOffset = Math.Min(Math.Max(0d, _totalHorizontalOffset - e.Delta), ScrollableWidth);
ScrollToHorizontalOffsetWithAnimation(_totalHorizontalOffset);
totalHorizontalOffset = Math.Min(Math.Max(0d, totalHorizontalOffset - e.Delta), ScrollableWidth);
ScrollToHorizontalOffsetWithAnimation(totalHorizontalOffset);
}
}
internal void ScrollToTopInternal(double milliseconds = 500d)
{
if (!_isRunning)
if (!isRunning)
{
_totalVerticalOffset = VerticalOffset;
totalVerticalOffset = VerticalOffset;
CurrentVerticalOffset = VerticalOffset;
}
@@ -113,9 +113,9 @@ public class SmoothScrollViewer : ScrollViewer
animation.Completed += (s, e1) =>
{
CurrentVerticalOffset = offset;
_isRunning = false;
isRunning = false;
};
_isRunning = true;
isRunning = true;
BeginAnimation(CurrentVerticalOffsetProperty, animation, HandoffBehavior.Compose);
}
@@ -131,9 +131,9 @@ public class SmoothScrollViewer : ScrollViewer
animation.Completed += (s, e1) =>
{
CurrentHorizontalOffset = offset;
_isRunning = false;
isRunning = false;
};
_isRunning = true;
isRunning = true;
BeginAnimation(CurrentHorizontalOffsetProperty, animation, HandoffBehavior.Compose);
}