Chr*_*ian 5 c# xaml microsoft-metro windows-phone-8
我希望我的应用程序在每个应用程序中都有一个Pivot控件.问题是刷到下一个不起作用,因为它反而导致水平滚动网页.但是,网页是响应式的,不需要水平滚动,所以我想要水平滑动导致枢轴切换.这可以实现吗?如果我不能使用控件在页面上使用s 实现页面切换的推荐方法是什么?iOS/Android的顶级菜单?WebBrowserPivotItemPivotItemPivotWebControl
是的,这是可能的,但是需要很少的解决方法,因为 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,但我认为这会更简单(如果足够的话)。
如果您想禁用某些手势,例如可以像下面的代码一样。我只启用了 HorizontalDrag - 所以它不会触发缩放。容差当然不应该是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--;
   }
}
| 归档时间: | 
 | 
| 查看次数: | 1553 次 | 
| 最近记录: |