防止在枢轴元素之间滑动

本文关键字:之间 元素 | 更新日期: 2023-09-27 18:17:44

我知道以前有人问过这个问题,但从来没有人回答过Windows Phone 8。

在Windows Phone 7中,可以在基础Pivot元素上设置isHitTestVisible = false,以在滑动某些元素(如滑块和文本框)时阻止PivotItem滚动。然而,在Windows Phone 8中,枢轴在ManipulationStarted事件(甚至Touch对象的事件)触发之前滚动。这意味着我们不能像在Windows Phone 7中那样通过监听某些控件上的ManipulationStarted来阻止在枢轴之间滚动。

是否有办法禁用滚动在某些元素,甚至屏幕的某些部分?

防止在枢轴元素之间滑动

如果您的实际问题是Pivot吞下了地图/滑块等的操作事件。设置UseOptimizedManipulationRouting="False" .

MSDN对此属性有更长的解释。

否则正确的方法是使用Pivot.IsLocked="True"

对于UWP,我想使用Pivot更像选项卡控件,所以我要重写Pivot样式,并且有一个元素Pivot Panel,所以如果我们禁用ManipulationMode=None,那么滑动将被禁用,它将更像选项卡。

<PivotPanel x:Name="Panel" VerticalAlignment="Stretch" ManipulationMode="None">

我建议你使用WP Silverlight Tolkit,他们提供了很好的手势事件,你的事件是WhenFlicked()。

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
<toolkit:GestureService.GestureListener>
    <toolkit:GestureListener Flick="WhenFlicked"/>
</toolkit:GestureService.GestureListener>

功能:

if (e.Direction.ToString() == "Horizontal") //Left or right
            {
                if (e.HorizontalVelocity > 0) //Right
                {
                    Pivot.CurrentItem=Pivot.CurrentItem+1; //don't remember the code for changing the page...
                }
                else //Left
                {
                    Pivot.CurrentItem=Pivot.CurrentItem-1;
                }
            }

我也试着写我的滑动事件,但这一个是更好的方式,不触发事件的元素放置在页面上。祝你好运