WPF-ScrollViewer之触屏滚动

  1. 开启触屏滚动 ScrollViewer在鼠标模式下可以通过鼠标滚轮或者操作滚动条进行内容滚动,如果需要在触屏下能通过手指直接划动内容则需要一些设置:
    1. 设置PanningMode的值
//PanningMode的值包含:
// 摘要:
//     System.Windows.Controls.ScrollViewer 没有响应触摸屏输入。
None = 0,
//
// 摘要:
//     System.Windows.Controls.ScrollViewer 仅水平滚动。
HorizontalOnly = 1,
//
// 摘要:
//     System.Windows.Controls.ScrollViewer 仅垂直滚动。
VerticalOnly = 2,
//
// 摘要:
//     System.Windows.Controls.ScrollViewer 水平和垂直滚动。
Both = 3,
//
// 摘要:
//     System.Windows.Controls.ScrollViewer 执行滚动操作使得用户移动手指时首先水平。 如果用户移垂直第一,移动将被视为鼠标事件。
//     之后 System.Windows.Controls.ScrollViewer 开始向下滚动,它将水平和垂直滚动。
HorizontalFirst = 4,
//
// 摘要:
//     System.Windows.Controls.ScrollViewer 执行滚动操作使得用户移动手指时先垂直。 如果用户移首先水平,移动将被视为鼠标事件。
//     之后 System.Windows.Controls.ScrollViewer 开始向下滚动,它将水平和垂直滚动。
VerticalFirst = 5
  1. 设置了PanningMode值后,在滚动到底或者顶的时候会出现在窗口抖动的情况,这时如果产品说不能抖时,需要在窗体下的第一层容器增加ManipulationBoundaryFeedback事件的订阅:
<Window ...>
	<Grid ManipulationBoundaryFeedback="OnManipulationBoundaryFeedback">
		<ScrollViewer PanningMode=VerticalOnly....>
			....
		</ScrollViewer>
	</Grid>
</Window>

//.cs文件
private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
    e.Handled  = true;
}
  1. 还有其它相关的设置如:PanningRatio、PanningDeceleration等参考ScrollViewer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章