我理解这个问题has been asked before,但从未对Windows Phone 8有过回答。
在Windows Phone 7中,可以在基础isHitTestVisible = false
元素上设置Pivot
,以便在滑动某些元素(如“滑块”和“文本框”)时阻止PivotItem滚动。但是,在Windows Phone 8中,Pivot在ManipulationStarted
事件(甚至是Touch
对象的事件)触发之前滚动。这意味着无法通过在Windows Phone 7中监听某些控件上的ManipulationStart来阻止在Pivots之间滚动。
有没有办法禁止滚动某些元素,甚至屏幕的某些部分?
答案 0 :(得分:14)
如果您的实际问题是Pivot吞下地图/滑块等操作事件。控制,尝试设置UseOptimizedManipulationRouting="False"
。
MSDN对此属性有更长的解释。
否则正确的方法是使用Pivot.IsLocked="True"
。
答案 1 :(得分:2)
对于UWP,我想更像像标签控件一样使用Pivot,所以我要覆盖枢轴样式,并且有一个元素Pivot Panel,所以如果我们禁用ManipulationMode =无滑动将被禁用并且它将工作更像是标签。
<PivotPanel x:Name="Panel" VerticalAlignment="Stretch" ManipulationMode="None">
答案 2 :(得分: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;
}
}
我也试过编写我的滑动事件,但是这个更好,并且不会触发页面上放置元素的事件。祝你好运