以前想要禁止内置的手势动作,看了一下网上是设置 IsLocked="True".
但是拿到UWP上来,靠,设置了之后header只显示当前的那个header。这样的设计真是丑爆了。。没办法,只能自己研究。看了看Pivot的模板,找到个方法。
不多说。直接上代码。
比如说我想在第一个item里面做一些拖拽的动作,因为有内置手势,没法直接使用。
为Grid增加上面的事件和属性设置,注意ManipulationMode="TranslateX" 是必然设置的,根据你自己的需求。
再看一下后台的代码
Pivot pivot = null; private void Grid_PointerPressed(object sender, PointerRoutedEventArgs e) { if (pivot == null) { var parent = (sender as Grid).Parent as FrameworkElement; while (parent != null) { pivot = parent as Pivot; if (pivot != null) { ScrollViewer.SetHorizontalScrollMode(pivot, ScrollMode.Disabled); break; } parent = parent.Parent as FrameworkElement; } } else { ScrollViewer.SetHorizontalScrollMode(pivot, ScrollMode.Disabled); } } private void Grid_PointerReleased(object sender, PointerRoutedEventArgs e) { if (pivot != null) { ScrollViewer.SetHorizontalScrollMode(pivot, ScrollMode.Enabled); } }
控制ScrollViewer的HorizontalScrollMode 属性。。我上面写成这样是因为,项目里面不是简单的grid,是一个自定义的页面。反正意思就是去拿到Pivot,进行设置就ok了。
有更好的办法的同学分享一下。
又查看了一下模板,修改了模板之后还是可以继续使用IsLocked 属性。注意蓝色部分,将它注释掉就可以了