【问题标题】:How to listen to the scrolling event of scrollviewer in windows phone 8?windows phone 8中如何监听scrollviewer的滚动事件?
【发布时间】:2014-02-11 01:11:05
【问题描述】:

我为 Windows 8/8.1 开发。它的滚动查看器在滚动时生成事件,例如 - ViewChanging/ViewChanged。

我在 windows phone 8 中找不到任何这样的scrollviewer 事件。当scrollviewer 在WP8 中滚动时,我如何收听?

我正在寻找类似于iOS开发的-ScrollViewDidScroll()的方法。

【问题讨论】:

  • 你想做什么?有滚动的视觉状态,也许你可以使用它们。
  • 我正在尝试调整与顶部的滚动查看器相关的底部网格。现在我可以通过在滚动查看器上收听“mousemove”事件来做到这一点。但是,过渡和效果不是很流畅。 ui 在状态之间跳转,有时鼠标移动事件也会被硬件遗漏。
  • 我尝试搜索任何类似于 iOS 的 -ScrollViewDidScroll() 的事件。但是找不到?
  • 嗯,是的,我不知道。您是否考虑过将底部网格的位置绑定到 ScrollViewer 的“VerticalOffset”属性?
  • 我对 WP8 开发人员并不陌生。你能解释一下我如何用scrollviewer绑定网格的偏移量吗?或将我引导至示例或博客。在此期间,我会尝试用谷歌搜索它。谢谢。

标签: c# c#-4.0 windows-phone-8 scrollviewer


【解决方案1】:

尝试过使用这个活动吗? - ScrollViewer.ViewChanged event

【讨论】:

  • ViewChanged 事件不适用于 windows phone 8 控件中的滚动查看器。
  • +1 这是唯一一个在 WP 8.1 中为我工作的通用应用程序。
【解决方案2】:

如果您使用的是 ScrollViewer 或 ListBox,您可以监听控件的 LayoutUpdated 事件并检查 VerticalOffset。这并不理想,并且不会像您希望的那样经常更新,但会帮助您完成大部分工作。

这是一个仅使用 ScrollViewer 的示例

<ScrollViewer LayoutUpdated="OnScrollViewerUpdated">
    <TextBlock/>
    <TextBlock/>
    <TextBlock/>
    <TextBlock/>
    <TextBlock/>
</ScrollViewer>

代码:

private void OnScrollViewerUpdated(object sender, EventArgs e)
{
    var scrollViewer = (ScrollViewer) sender;

    // do something with scrollViewer.VerticalOffset;
}

如果您正在使用 WP8 中的 LongListSelector,您可以立即获得更新。您可以连接到 LLS 的 ViewportControl 并获取它的 ViewPort 位置。这是a blog post detailing 你如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多