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

Sub*_*ion 5 events scroll scrollviewer windows-phone-7 windows-phone

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

我有一个像这样的scrollviewer:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ScrollViewer x:Name="MyScroller">
        <StackPanel>
            <!-- ... -->
        </StackPanel>
    </ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我需要在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
Run Code Online (Sandbox Code Playgroud)

Sub*_*ion 12

滚动ScrollViewer时会触发MouseMove:

public MainPage()
{
    InitializeComponent();

    MyScroller.MouseMove += MyScroller_MouseMove;
}

void MyScroller_MouseMove(object sender, MouseEventArgs e)
{
    throw new NotImplementedException();// This will fire
}
Run Code Online (Sandbox Code Playgroud)

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


Stu*_*art 1

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

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

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