更新
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user