如何区分PointerWheelChanged事件中鼠标滚轮的滚动与倾斜操作?
区分鼠标滚轮上下滚动与倾斜操作的方法
你之前用的MouseWheelDelta其实仅对应垂直方向的滚轮增量,要判断是上下滚动还是左右倾斜,需要直接读取PointerPointProperties中的两个细分属性:
MouseWheelDeltaY:对应垂直滚轮动作,正值表示向上滚动,负值表示向下滚动MouseWheelDeltaX:对应水平倾斜动作,正值表示向右倾斜,负值表示向左倾斜
修改后的代码示例:
private void TestScrollViewer_PointerWheelChanged(object sender, PointerRoutedEventArgs e) { PointerPoint ptrPt = e.GetCurrentPoint((UIElement)sender); var wheelProperties = ptrPt.Properties; // 处理垂直滚动 int verticalDelta = wheelProperties.MouseWheelDeltaY; if (verticalDelta > 0) { // 执行向上滚动逻辑 } else if (verticalDelta < 0) { // 执行向下滚动逻辑 } // 处理水平倾斜滚动 int horizontalDelta = wheelProperties.MouseWheelDeltaX; if (horizontalDelta > 0) { // 执行向右倾斜逻辑 } else if (horizontalDelta < 0) { // 执行向左倾斜逻辑 } }
补充说明:原代码中的MouseWheelDelta本质是MouseWheelDeltaY的快捷属性,仅能反馈垂直方向的滚轮变化,无法捕捉水平倾斜的动作,因此必须单独读取X轴增量来区分两种操作。
内容的提问来源于stack exchange,提问作者RD4
相关产品推荐
相关产品推荐

