使用Canvas使ScrollViewer在代码中顺畅滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Canvas使ScrollViewer在代码中顺畅滚动相关的知识,希望对你有一定的参考价值。

如何让ScrollViewer在代码中平滑地滚动我的Canvas(没有xaml)?正如我所知,对于xaml,它需要将ScrollUnit设置为“Pixel”,但我无法在代码中执行此操作。

答案

如果你所追求的是移动滚动一个像素与每个鼠标滚轮转这里是方式。

注册鼠标滚轮预览事件。

<ScrollViewer Height="350" Width="525" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
    <Canvas Height="650" Width="510">
        <Button Name="b" Height="30" Width="525" Content="Button text"/>
    </Canvas>
</ScrollViewer>

每次事件触发时将滚动移动1个像素,并将其设置为已处理。

private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
    ScrollViewer scrollViewer = sender as ScrollViewer;
    double offset = scrollViewer.VerticalOffset - Math.Sign(e.Delta);
    scrollViewer.ScrollToVerticalOffset(Math.Min(Math.Max(offset, 0), scrollViewer.ExtentHeight));
    e.Handled = true;
}

以上是关于使用Canvas使ScrollViewer在代码中顺畅滚动的主要内容,如果未能解决你的问题,请参考以下文章

使用ScrollViewer调整UWP Canvas中的UI元素大小

win2d图片平铺无法在UWP Scrollviewer中运行

ScrollViewer中的Silverlight Canvas大小调整

使 Scrollviewer 填充 DockPanel 中的可用空间

Expression Blend实例中文教程 - 布局控件快速入门StackPanel,ScrollViewer和Border

如何使 WPF ScrollViewer 中键单击滚动?