feat: make an assumption that user want to drag to opposite direction when two thumbs overlap.

This commit is contained in:
rabbitism
2024-04-02 18:11:48 +08:00
parent e32f59f277
commit 258a8f0bf6

View File

@@ -271,6 +271,7 @@ public class RangeSlider: TemplatedControl
var isHorizontal = Orientation == Orientation.Horizontal; var isHorizontal = Orientation == Orientation.Horizontal;
var lowerThumbPosition = isHorizontal? _track?.LowerThumb?.Bounds.Center.X : _track?.LowerThumb?.Bounds.Center.Y; var lowerThumbPosition = isHorizontal? _track?.LowerThumb?.Bounds.Center.X : _track?.LowerThumb?.Bounds.Center.Y;
var upperThumbPosition = isHorizontal? _track?.UpperThumb?.Bounds.Center.X : _track?.UpperThumb?.Bounds.Center.Y; var upperThumbPosition = isHorizontal? _track?.UpperThumb?.Bounds.Center.X : _track?.UpperThumb?.Bounds.Center.Y;
var mid = isHorizontal? _track?.Bounds.Center.X : _track?.Bounds.Center.Y;
var pointerPosition = isHorizontal? point.Position.X : point.Position.Y; var pointerPosition = isHorizontal? point.Position.X : point.Position.Y;
var lowerDistance = Math.Abs((lowerThumbPosition ?? 0) - pointerPosition); var lowerDistance = Math.Abs((lowerThumbPosition ?? 0) - pointerPosition);
@@ -280,10 +281,12 @@ public class RangeSlider: TemplatedControl
{ {
return _track?.LowerThumb; return _track?.LowerThumb;
} }
else if(lowerDistance>upperDistance)
{ {
return _track?.UpperThumb; return _track?.UpperThumb;
} }
if (IsDirectionReversed) return pointerPosition < mid ? _track?.LowerThumb : _track?.UpperThumb;
return pointerPosition > mid ? _track?.LowerThumb : _track?.UpperThumb;
} }
private double GetValueByPoint(PointerPoint point) private double GetValueByPoint(PointerPoint point)