windows 10通用应用中滚动查看器的问题

本文关键字:问题 滚动 10通 应用 windows | 更新日期: 2023-09-27 18:07:22

我正在开发一个windows 10通用应用程序。我的页面的基本结构是这样的

<Grid>
   <ScrollViewer ViewChanged="MyScrollViewer_ViewChanged" VerticalScrollBarVisibility="Auto" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled" IsVerticalRailEnabled="True" IsVerticalScrollChainingEnabled="True">
        <Pivot>
          <PivotItem/>
          <PivotItem/>
          <PivotItem/>
          <PivotItem/>
        </Pivot>
   </ScrollViewer>
</Grid>

在我的代码后面,我写了一个事件来处理像这样改变的滚动

   private void MyScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        //My business logic goes here 
    }

对于每个pivot项目,都有要滚动的内容。

当我运行应用程序时发生的是当我试图从右边的滚动条滚动时,我的MyScrollViewer_ViewChanged事件被触发,但当我试图用鼠标滚轮滚动时,事件没有被触发,我无法继续。请帮忙找出这个问题。由于

windows 10通用应用中滚动查看器的问题

你的滚动查看器内部的枢轴是拦截你的触摸和鼠标滚轮的交互,这就是为什么你没有收到任何与你的鼠标滚轮。

在滚动查看器中放置枢轴是非常非常奇怪的。你想要达到什么样的行为?如果你想在每个数据透视项中垂直滚动,你应该在每个数据透视项中放置一个滚动查看器,而不是在数据透视项周围。

我有同样的问题,我像这样修复它,但我希望我们找到一个更好的方法,因为它的bug。

 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 / 10, null, false);
        }
        if (e.GetCurrentPoint(scrollViewer).Properties.MouseWheelDelta == (120))
        {
            // On Mouse Wheel scroll Forward
            scrollViewer.ChangeView(null,scrollViewer.VerticalOffset - Window.Current.CoreWindow.Bounds.Height / 10, null, false);
        }
    }