在 WP8.1 中拦截 ManipulationDelta 的问题

Problems intercepting ManipulationDelta in WP8.1

我刚开始使用 WP8.1 的应用程序,在保留原始事件处理的同时拦截触摸移动事件时遇到问题。

我想做的是:

听起来很简单,但我尝试过的任何方法似乎都取消了 ScrollViewer 的原始触摸移动处理,因此垂直滚动不再起作用。我真的很讨厌自己实现整个滚动行为...

我已经试过了:

XAML 代码如下所示(删除了一些数据):

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationMode="TranslationX" ManipulationDelta="gridTranslationX">
    <ScrollViewer x:Name="ScrollViewer" ManipulationMode="TranslationX" ManipulationDelta="scrollViewerTranslationX">
        <StackPanel x:Name="StackPanel" Orientation="Horizontal" ManipulationMode="TranslationX" ManipulationDelta="scrollViewerTranslationX">
            <ListView x:Name="ListView" ManipulationMode="TranslationX" ManipulationDelta="scrollViewerTranslationX">
            </ListView>
        </StackPanel>
    </ScrollViewer>
</Grid>

我尝试在代码中安装的处理程序如下所示:

this.AddHandler(UIElement.ManipulationDeltaEvent, new ManipulationDeltaEventHandler(genericDeltaHandler), true);
ListView.PointerMoved += new PointerEventHandler(pointerEvent);

有什么方法可以只观察操纵事件而不影响他们的正常治疗吗?

有时谈论它会有所帮助 ;-) ...

答案确实很简单,只需将 System 值添加到 ListView:

上的 ManipulationMode
<ListView x:Name="ListView" ManipulationMode="TranslateX,System" ManipulationDelta="translationX">