0

我将一个 WebBrowser 控件放在一个 pivotItem 中,然后出现了一个问题,WebBrowser 控件接管了轻弹手势。所以枢轴不能正常导航。所以我在父容器中放了一个gestureListner。

            <ScrollViewer Grid.Row="1" 
                          VerticalScrollBarVisibility="Auto">
                <phone:WebBrowser x:Name="myWB1"
                    FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                    wb:WebBrowserHtmlBinding.HtmlString="{Binding MainFloor}" 
                    Foreground="{StaticResource TitleColor}"
                    HorizontalContentAlignment="Stretch" 
                    VerticalContentAlignment="Top"
                    Width="Auto" Height="Auto"
                    Navigating="WebBrowser_Navigating">

                </phone:WebBrowser>
                <toolkit:GestureService.GestureListener>
                    <toolkit:GestureListener Flick="GestureListener_Flick" />
                </toolkit:GestureService.GestureListener>
            </ScrollViewer>

    private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
    {
        if (e.Direction.ToString() == "Horizontal")
        {
            myPivot.SelectedIndex = 1;
        }
    }

上面的代码有效,但问题是它总是朝一个方向导航。无论我向右或向左滑动。枢轴始终从右到左导航。为什么,以及如何解决? [WebBrowser控件的pivotitem的SelectedIndex为0,下一个pivot为1。]

4

1 回答 1

0

您没有检查轻弹是向左还是向右。您只检查方向,如果是水平的,它可能是左或右。尝试这个:

private void GestureListener_Flick(object sender, FlickGestureEventArgs e) {
  if (e.Direction == System.Windows.Controls.Orientation.Vertical) return;

  var currentIndex = myPivot.SelectedIndex;
  var maxIndex = myPivot.Items.Count - 1;

  // User flicked towards left
  if (e.HorizontalVelocity < 0) {
    if (currentIndex < maxIndex) myPivot.SelectedIndex++; else myPivot.SelectedIndex = 0;
  // User flicked towards right
  } else if (e.HorizontalVelocity > 0) {
    if (currentIndex > 0) myPivot.SelectedIndex--; else myPivot.SelectedIndex = maxIndex;
  }
}

或者,您可以简单地将浏览器控件设置IsHitTestVisiblefalse禁用手势。

于 2013-06-08T18:39:19.320 回答