Xaml 使用鼠标时滚动ScrollViewer而不带步骤/间隙

Xaml 使用鼠标时滚动ScrollViewer而不带步骤/间隙,xaml,win-universal-app,scrollviewer,windows-10-universal,Xaml,Win Universal App,Scrollviewer,Windows 10 Universal,使用鼠标交互,水平拖动ScrollViewer的滚动条时,ScrollViewer的内容将以小步滚动。如果应用程序以触摸交互方式运行,则滚动将平滑,没有任何步骤/间隙。如何使用鼠标进行滚动而不出现步骤/间隙,因为它是通过触摸交互完成的 桌面: 鼠标: 一种解决方法是隐藏ScrollViewer的滚动条,并直接使用点击拖动鼠标事件。WaveformScroller是ScrollViewer。WaveformCanvas是滚动控件 Vector2 lastDragPoint; bool point

使用鼠标交互,水平拖动ScrollViewer的滚动条时,ScrollViewer的内容将以小步滚动。如果应用程序以触摸交互方式运行,则滚动将平滑,没有任何步骤/间隙。如何使用鼠标进行滚动而不出现步骤/间隙,因为它是通过触摸交互完成的

桌面:

鼠标:

一种解决方法是隐藏ScrollViewer的滚动条,并直接使用点击拖动鼠标事件。WaveformScroller是ScrollViewer。WaveformCanvas是滚动控件

Vector2 lastDragPoint;
bool pointerPressed;

WaveformCanvas.PointerPressed += (sender, args) =>
{
        WaveformCanvas.CapturePointer(args.Pointer);
        lastDragPoint = args.GetCurrentPoint((UIElement)sender).Position.ToVector2();
        pointerPressed = true;
};

WaveformCanvas.PointerMoved += (sender, args) =>
{
    if (pointerPressed)
    {
        var newDragPoint = args.GetCurrentPoint((UIElement)sender).Position.ToVector2();
        var deltaX = newDragPoint.X - lastDragPoint.X;
        var newOffset = WaveformScroller.HorizontalOffset - deltaX;
        WaveformScroller.HorizontalOffset = WaveformScroller.HorizontalOffset - deltaX;
    }
};

WaveformCanvas.PointerReleased += (sender, args) =>
{
    pointerPressed = false;
    WaveformCanvas.ReleasePointerCapture(args.Pointer);
};

ScrollViewer.CanContentScroll=“False”
,您尝试过吗?