如何检测 ScrollViewer 何时完成滚动?

LeB*_*nes 3 c# xaml listview scrollviewer uwp

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

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

ken*_*yzx 5

您可以连接 scrollViewer 的ViewChanged 事件,并检查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");
    }
}
Run Code Online (Sandbox Code Playgroud)

此事件被多次触发。当滚动完成时,IsIntermediate为假。