经过一番研究找到一个可行的办法,原理:
拦截ManipulationCompleted事件,判断滑动的X和Y轴的偏移量,据此判断是否应该允许左右滑动即可。
代码大致如下:
Xaml部分:
C#部分:
private void PivotItem_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) { var itemsPresenter = this.Pivot.GetVisualDescendents
var x = Math.Abs(e.TotalManipulation.Translation.X); var y = Math.Abs(e.TotalManipulation.Translation.Y); if (x / y < 2 && y > 30 && trans.X == 0.0)//此处有效工作,但并不一定最佳,请自行研究搭配最佳的数据 { e.Handled = true; } }
解释:
刚开始时简单的Y〉X即判定允许滑动,结果还是很频繁的误操作,SO,改成Y必须是X的2倍才允许左右滑动,误操作大大减少,基本没有了,但是新的问题又出来了,当左右滑动一段距离后改为上下滑动并使X/Y<2这时候画面就会停顿在手指放开时的情况,即PivotItem无法归位,经验证只需要判断Pivot控件的左右位移情况即可解决该问题,至此该方案基本完美。
抛砖引玉,如果大家有更好的方案不妨一起交流
书中圣团队:mohoo studio
最新评论