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 コントロールのピボット項目の SelectedIndex は 0、次のピボットは 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 に答える