gpt4 book ai didi

c# - 检测 ScrollViewer 何时停止滚动

转载 作者:太空宇宙 更新时间:2023-11-03 20:08:14 25 4
gpt4 key购买 nike

我有一个 SurfaceListBox,里面有一个 ScrollViewer。我可以访问那个 ScrollViewer 并且我想检测滚动何时结束。因为它是一个触摸应用程序,我可以拖动它,现在我正在检测 PreviewTouchUp 来做我想做的事情,但是,如果我快速滑动,就像你在智能手机上做的那样,因为 ScrollViewer 的内容还在拖动/滚动,所以 PreviewTouchUp 并没有反射(reflect)滚动结束,而是提前触发。

我已经在 ScrollViewerSurfaceListBox 上尝试了 Manipulation 事件和其他几个事件。我也尝试过 ScrollViewer.PanningDeceleration,老实说,我看不出有什么不同。基本上,到目前为止没有运气。

那么,即使在 ScrollViewer 中的 PreviewTouchUp 之后,我如何检测滚动的结束?

最佳答案

你不能只处理 ScrollViewer.ScrollChanged event ?从链接页面,它说它......

Occurs when changes are detected to the scroll position, extent, or viewport size.

所以您可以启动一个 DispatcherTimer 以在每次引发事件时等待一小段时间,例如。当它滚动时。当滚动停止并且事件停止引发时,将调用 Tick 处理程序,您可以在其中执行任何您喜欢的操作。尝试这样的事情:

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 250);
timer.Tick += Timer_Tick;

...

private void ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (timer.IsEnabled) timer.Stop();
timer.Start();
}

private void Timer_Tick(object sender, EventArgs e)
{
timer.Stop();
// Do what you want now that scrolling has stopped
}

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com