6

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

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

有什么方法可以禁用滚动某些元素,甚至屏幕的某些部分?

4

3 回答 3

14

如果您的实际问题是地图/滑块/等的枢轴吞咽操作事件。控件,尝试设置UseOptimizedManipulationRouting="False"

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

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

于 2013-08-03T11:13:09.910 回答
3

对于 UWP,我想使用 Pivot 更像是选项卡控件,所以我想覆盖枢轴样式并且有一个元素 Pivot Panel 所以如果我们禁用 ManipulationMode=None 滑动将被禁用,它会更像选项卡一样工作。

<PivotPanel x:Name="Panel" VerticalAlignment="Stretch" ManipulationMode="None">
于 2016-06-05T11:26:39.827 回答
0

我建议您使用 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;
                }
            }

我也尝试编写我的滑动事件,但是这个更好,并且不会触发放置在页面上的元素的事件。祝你好运

于 2013-08-02T06:50:00.537 回答