Sch*_*Box 1 c# wpf scroll scrollviewer pixelsense
我有一个SurfaceListBox里面有一个ScrollViewer。我可以访问它,ScrollViewer并且我想检测滚动结束的时间。由于它是一个触摸应用程序,可以拖动它,因此,我现在正在检测到PreviewTouchUp要执行的操作,但是,如果像我在智能手机上那样快速滑动,因为的内容ScrollViewer仍在拖动/ scrolling,PreviewTouchUp不会反映滚动结束,而是在之前触发。
我曾尝试Manipulation事件和其他几个人同时在ScrollViewer和SurfaceListBox。我也尝试过ScrollViewer.PanningDeceleration,说实话,我看不出有什么不同。到目前为止,基本上没有运气。
因此,即使在PreviewTouchUp中,我也如何检测滚动的结束ScrollViewer?
您不能只处理ScrollViewer.ScrollChanged事件吗?在链接页面上,它说...
当检测到滚动位置,范围或视口大小发生更改时发生。
因此,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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3207 次 |
| 最近记录: |