c# - 如何检测 ScrollViewer 何时完成滚动?

标签 c# xaml listview uwp scrollviewer

顺便说一句,我正在使用 UWP 以防万一。 所以我使用的是 ListView,默认情况下,所有 ListView 都附加了一个 ScrollViewer(在默认模板中)。问题是我找不到在 ListView 完成滚动时触发的事件(在 ListView 本身或其 ScrollViewer 上)。

我使用 scrollViewer.ChangeView() 方法自动滚动到 ListView 的开头,它使用动画滚动到顶部,所以我认为这与它有关,因为 ViewChanged 事件在动画之前触发完成。如果我对此是正确的,那么必须有一种方法来确定动画是否完成,因为我需要在 ListView 再次完全空闲时收到警报,这仅在滚动动画完成时发生。谢谢。

最佳答案

您可以连接 scrollViewer 的 ViewChanged event , 并检查事件参数的 IsIntermediate

private void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
    if (e.IsIntermediate)
    {
        System.Diagnostics.Debug.WriteLine("scroll ongoing");
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("scroll finish");
    }
}

此事件被触发多次。滚动完成后,IsIntermediate 为 false。

关于c# - 如何检测 ScrollViewer 何时完成滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828897/

相关文章:

wpf - 即使应用 RotateTransform,文本 block 也占用相同的水平空间

Android: ClassCastException 添加 HeaderView 到 Listview

xaml - 如何禁用 ListView 悬停和平铺效果?

c# - 在 C# 中使用 oledb 获取 Excel 数据范围

c# - 回发之间的 ASP.Net session 清除?

android - Xamarin 按钮边框问题

c# - 组合 Datepicker 和 Timepicker 值 Win 8.1

c# - 删除除空格外的所有非数字字符

c# - 从另一个 DataContext 加载?

android - 为什么我的ListView是从下往上开始的?