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

问题描述 投票:0回答:1

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

c# wpf
1个回答
0
投票

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

注册鼠标滚轮预览事件。

<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;
}
© www.soinside.com 2019 - 2024. All rights reserved.