【问题标题】:How to detect when a ScrollViewer finishes scrolling?如何检测 ScrollViewer 何时完成滚动?
【发布时间】:2018-11-22 13:03:03
【问题描述】:

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

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

【问题讨论】:

    标签: c# xaml listview uwp scrollviewer


    【解决方案1】:

    您可以连接 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。

    【讨论】:

    • 谢谢!完美运行。
    • 也许系统已经改变 - 我发现 ViewChanged 触发了 e.IsIntermediate() 的错误结果(这是 C++/winrt),但滚动动画尚未完成。
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 2021-03-11
    • 2015-08-15
    • 2018-04-09
    • 2019-02-09
    • 2013-05-07
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多