在ScrollViewer中旋转,scrollviewer不会滚动

时间:2015-09-07 01:24:19

标签: c# xaml windows-10 scrollviewer

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

<ScrollViewer x:Name="scrollViewer" VerticalScrollMode="Enabled" HorizontalScrollMode="Disabled">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="90"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition MaxWidth="180"/>
        <ColumnDefinition Width="360*" MaxWidth="1060"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
      <!-- more UI elements-->
    <Pivot ScrollViewer.HorizontalScrollMode="Disabled" ScrollViewer.VerticalScrollMode="Disabled" x:Name="InfoPivot" Title="Pivot" Grid.Column="1"  Grid.Row="4" VerticalAlignment="Top" MaxWidth="1060" HorizontalAlignment="Left" MinHeight="500">
        <PivotItem Header="Mylist">
            <GridView x:Name="theList" Margin="20,10,10,13" ItemTemplate="{StaticResource GridViewTemplate1}" VerticalAlignment="Top" HorizontalAlignment="Center"/>
        </PivotItem>
    </Pivot>
</Grid>

2 个答案:

答案 0 :(得分:1)

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

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

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);
    }
}

答案 1 :(得分:1)

documentation规定我们不会将Pivot放在ScrollViewer内。

  

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

PointerWheelChanged doc说:

  

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

有关GridViewListView文档的说明也适用于Pivot

  

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