检测 UWP 应用中的滚动方向
Detect direction of scrolling in UWP apps
我正在用 C# 开发一个 UWP 应用程序,并使用 ScrollViewer 来滚动一些内容。当用户垂直滚动时,我想知道是否有办法检测用户是从上到下还是从下到上滚动(即滚动方向)?
您可以借助 ScrollViewer 的 VerticalOffset 属性 来检测移动,如果值在增加,用户从上到下滚动。如果该值正在减少,则用户正在从底部滚动到顶部。您可以监听 ScrollViewer 的 ViewChanged 事件并执行必要的逻辑。下面是示例绑定来演示这个想法。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock VerticalAlignment="Center" Text="{Binding VerticalOffset, ElementName=tst,Mode=OneWay}"/>
<ScrollViewer Grid.Row="1" x:Name="tst" ViewChanged="tst_ViewChanged">
<StackPanel Background="Gray" Height="2500">
</StackPanel>
</ScrollViewer>
</Grid>
输出:
我正在用 C# 开发一个 UWP 应用程序,并使用 ScrollViewer 来滚动一些内容。当用户垂直滚动时,我想知道是否有办法检测用户是从上到下还是从下到上滚动(即滚动方向)?
您可以借助 ScrollViewer 的 VerticalOffset 属性 来检测移动,如果值在增加,用户从上到下滚动。如果该值正在减少,则用户正在从底部滚动到顶部。您可以监听 ScrollViewer 的 ViewChanged 事件并执行必要的逻辑。下面是示例绑定来演示这个想法。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock VerticalAlignment="Center" Text="{Binding VerticalOffset, ElementName=tst,Mode=OneWay}"/>
<ScrollViewer Grid.Row="1" x:Name="tst" ViewChanged="tst_ViewChanged">
<StackPanel Background="Gray" Height="2500">
</StackPanel>
</ScrollViewer>
</Grid>
输出: