5

问题:在 Windows Phone 上获取 ScrollViewer 的滚动事件

我有一个这样的滚动查看器:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ScrollViewer x:Name="MyScroller">
        <StackPanel>
            <!-- ... -->
        </StackPanel>
    </ScrollViewer>
</Grid>

我需要 MyScroller 发生滚动时的事件:

// MyScroller.Scroll += // <-- "Scroll" event does not exist on ScrollViewer
MyScroller.MouseWheel += MyScroller_MouseWheel; // Does not fire on scroll
MyScroller.ManipulationDelta += MyScroller_ManipulationDelta; // Fires for pinch-zoom only
4

3 回答 3

12

滚动 ScrollViewer 时触发 MouseMove:

public MainPage()
{
    InitializeComponent();

    MyScroller.MouseMove += MyScroller_MouseMove;
}

void MyScroller_MouseMove(object sender, MouseEventArgs e)
{
    throw new NotImplementedException();// This will fire
}

它不直观,因为它被命名为“鼠标”事件,并且手机上没有鼠标。但是,触摸点确实相对于 ScrollViewer 容器移动,这就是它可以处理滚动的方式。

于 2011-03-10T19:27:28.077 回答
1

没那么简单,但是这个问题中写了一些滚动检测机制:

到达最后一项时WP7自动增长列表框

基本上看一下 OnListVerticalOffsetChanged 的​​调用和使用方式。

于 2011-03-10T20:18:27.800 回答
0

使用 Mango,您可以观察“ScrollStates”视觉状态的变化,如本示例项目中所述。

于 2012-02-17T16:06:33.630 回答