在ScrollViewer中旋转,scrollviewer不会滚动

我有一个页面,它有许多UI元素,其可滚动垂直像时间轴。 在中间我有一个枢轴,当它获得焦点或鼠标指针进入滚动查看器停止滚动。

                     

我找到了解决方案,但我希望有更好的方法。

编辑 :更改了分区,使其感觉更像是默认滚动。

 private void PivotItem_PointerWheelChanged(object sender, PointerRoutedEventArgs e) { if (e.GetCurrentPoint(scrollViewer).Properties.MouseWheelDelta == (-120)) { // On Mouse Wheel scroll Backward scrollViewer.ChangeView(null, scrollViewer.VerticalOffset + Window.Current.CoreWindow.Bounds.Height / 7, null, false); } if (e.GetCurrentPoint(scrollViewer).Properties.MouseWheelDelta == (120)) { // On Mouse Wheel scroll Forward scrollViewer.ChangeView(null,scrollViewer.VerticalOffset - Window.Current.CoreWindow.Bounds.Height / 7, null, false); } } 

该文档规定我们不将Pivot放在ScrollViewer中 。

不要在旋转查看器中放置Pivot控件以避免与pivot的滚动逻辑冲突。

PointerWheelChanged文档说:

特定的Windows运行时控件可能具有PointerWheelChanged输入事件的基于类的处理。 如果是这样,控件可能会覆盖方法OnPointerWheelChanged。 通常,事件由类处理程序标记处理,并且不会引发PointerWheelChanged事件以供该控件上的任何用户代码处理程序处理。 控件可能会这样做,以便通过使用指针轮动作来支持遍历其子元素。

GridView和ListView文档上的注释也适用于Pivot

PointerWheelChanged事件不会从GridView冒泡。 这意味着如果指针位于GridView上,则其内部具有GridView的控件不会接收鼠标滚轮更改消息。 例如,如果将GridView放在ScrollViewer中,则当指针位于GridView上时,无法使用鼠标滚轮滚动ScrollViewer。