在Windows Phone 8.0上使用嵌入式WebBrowser对轴控件进行滑动工作

我希望我的应用程序在每个PivotItem都有一个带有WebBrowser控件的Pivot控件。 问题是,滑动到下一个PivotItem不起作用,因为它反而导致水平滚动网页。 但是,网页是响应式的,不需要水平滚动,所以我想要水平滑动导致枢轴切换。 这可以实现吗? 如果我不能使用Pivot控件在页面上使用WebControl实现页面切换的推荐方法是什么? iOS / Android的顶级菜单?

是的,这是可能的,但是需要很少的解决方法,因为Webbrowser首先处理事件,而你的Pivot可能不知道它。 您可以使用Touch及其事件FrameReported 。 简单的代码可能如下所示:

 public MainPage() { InitializeComponent(); Touch.FrameReported += Touch_FrameReported; } TouchPoint first; private void Touch_FrameReported(object sender, TouchFrameEventArgs e) { TouchPoint mainTouch = e.GetPrimaryTouchPoint(myWebBrowser); if (mainTouch.Action == TouchAction.Down) first = mainTouch; else if (mainTouch.Action == TouchAction.Up) { if (mainTouch.Position.X - first.Position.X < 0) MessageBox.Show("Next item."); //myPivot.SelectedIndex++; if (mainTouch.Position.X - first.Position.X > 0) MessageBox.Show("Previous item."); //myPivot.SelectedIndex--; } } 

正如你所看到的 – 我记得用户开始他的动作的位置,然后当他释放他的触摸时 – 我改变了myPivot.SelectetIndex。 希望这有所帮助。 您也可以尝试使用TouchPanel ,但我认为这将更简单(如果它足够)。


如果你想禁用一些手势,它可以查找例如下面的代码。 我只启用了Horizo​​ntalDrag – 所以它不会触发缩放。 当然公差不应该是0,你必须定义最适合你的App。

 // in MainPage() constructor TouchPanel.EnabledGestures = GestureType.HorizontalDrag; private void Touch_FrameReported(object sender, TouchFrameEventArgs e) { TouchPoint mainTouch = e.GetPrimaryTouchPoint(myMap); if (mainTouch.Action == TouchAction.Down) first = mainTouch; else if (mainTouch.Action == TouchAction.Up && TouchPanel.IsGestureAvailable) { if (mainTouch.Position.X - first.Position.X < 0) MessageBox.Show("Next item."); //myPivot.SelectedIndex++; if (mainTouch.Position.X - first.Position.X > 0) MessageBox.Show("Previous item."); //myPivot.SelectedIndex--; } } 

以下是解决此特定问题的文章http://blogs.msdn.com/b/madenwal/archive/2015/02/11/how-to-embed-a-webbrowser-control-inside-a-pivot-item -in-Windows的phone.aspx