如何让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;
}