【问题标题】:Preventing swiping between Pivot elements防止在 Pivot 元素之间滑动
【发布时间】:2013-06-10 21:58:39
【问题描述】:

我了解这个问题has been asked before,但从来没有针对 Windows Phone 8 回答过。

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

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

【问题讨论】:

  • 我试图重现您的情况,发现 Slider 控件在 Pivot 控件中运行良好:我可以更改 Slider 值而无需在 Pivots 之间滚动。您对 Slider 有什么问题?
  • 您是否使用了多个 Pivot?您是否在滑动(而不仅仅是点击)来更改滑块的值?只有当存在多个枢轴时尝试拖动滑块时才会出现问题,
  • “多个枢轴”是指另一个枢轴内部的枢轴吗?或者像屏幕上半部分的 Pivot 和底部的另一个?
  • 两者都不是:一个Pivot 中有多个PivotItem。在该项目中将放置一个Slider 控件。
  • 不久前我遇到了类似的问题,解决方法是这篇文章geekchamp.com/tips/… 在 WP8 中运行良好

标签: c# windows-phone-7 windows-phone-8


【解决方案1】:

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

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

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

【讨论】:

  • UseOptimizedManipulationRouting 设置为 false 会有所帮助。但不要忘记控件事件处理程序中的e.Handle = true
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2016-04-16
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多