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

Chr*_*ian 5 c# xaml microsoft-metro windows-phone-8

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

Rom*_*asz 4

是的,这是可能的,但是需要很少的解决方法,因为 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--;
   }
}
Run Code Online (Sandbox Code Playgroud)

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


如果您想禁用某些手势,例如可以像下面的代码一样。我只启用了 Horizo​​ntalDrag - 所以它不会触发缩放。容差当然不应该是0,你必须定义最适合你的应用程序。

// 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--;
   }
}
Run Code Online (Sandbox Code Playgroud)