问题: 在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
答案 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”视觉状态的变化。