【问题标题】:How to determine when the scrollviewer has ended scrolling?如何确定滚动查看器何时结束滚动?
【发布时间】:2014-01-20 12:31:16
【问题描述】:

我需要在用户完成滚动后将滚动查看器调整到某个点。为此,我需要在滚动结束时收听。

iOS的UIScrollView也有一些类似的方法

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView that is called when the scrollview

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

我试过ViewChangingViewChanged,但是同时处理这两个事件的问题是它们一个接一个地发生。如下:

视图变化

视图改变了

视图变化

视图改变了

..

..

而不是 -

视图变化

视图变化

视图变化

视图变化

视图改变了

有什么方法可以让我在滚动查看器完成滚动或完成滚动拖动时获得通知?

请帮忙。

【问题讨论】:

  • 也许您可以为此使用 ManipulationCompleted 事件
  • 我也尝试添加一个处理程序,但它永远不会被调用。可能是因为我的滚动查看器的属性没有变化。

标签: wpf c#-4.0 windows-8 winrt-xaml scrollviewer


【解决方案1】:

你可以做的是:

  • 1.捕获MouseWheel事件。
  • 2.在MouseWheel 的事件处理程序中启动一个线程,这将计算时间来引发您的自定义事件,例如FinishedScrolling
  • 3.如果在计时器结束之前引发了MouseWheel 事件,这意味着滚动尚未完成,您应该终止计时器线程并重新启动它。

怎么样?它不应该占用太多代码,如果你使用 MVVM,你可以使用 Attached Behaviour。

【讨论】:

  • 谢谢迈克!我已经搜索了很多,基于我认为,现在它是唯一的方法,直到 MS 决定添加事件。
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2019-12-10
  • 1970-01-01
  • 2011-01-06
  • 2012-10-30
相关资源
最近更新 更多