使用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