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

时间:2011-03-10 19:26:41

标签: events windows-phone-7 scroll scrollviewer windows-phone

问题: 在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

3 个答案:

答案 0 :(得分:12)

滚动ScrollViewer时会触发MouseMove:

public MainPage()
{
    InitializeComponent();

    MyScroller.MouseMove += MyScroller_MouseMove;
}

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

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

答案 1 :(得分:1)

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

WP7 Auto Grow ListBox upon reaching the last item

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

答案 2 :(得分:0)

使用Mango,您可以按照此sample project中的说明观察“ScrollStates”视觉状态的变化。