1

左端に幅 200px のスタックパネルがあるとします。今、このパネルで左から右への水平スワイプを処理し、追加のパネルを表示したいと考えています。次に、右から左にスワイプして非表示にします。

ページManipulationStartedManipulationDeltaイベントを処理しようとしましたが、少なくともマウスでは効果がないようです。それを実装する簡単な方法は何ですか?

私が試したこと:ページのスワイプイベントを処理し、スタックパネルの境界で開始された場合はスワイプチェックの開始時に、それ以外の場合は無視します。

スワイプのデルタが正の 40 より大きい場合、スワイプは左から右に行われたように見えます。

私のXAMLファイル:

// standard stuff of page
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel Orientation="Vertical" Width="200" HorizontalAlignment="Left" Background="White" x:Name="Panel"/>
</Grid>

// 標準的なものを続ける

C# ファイル:

    public MainPage()
    {
        this.InitializeComponent();
        this.ManipulationDelta += MainPage_ManipulationDelta;
        this.ManipulationStarted += MainPage_ManipulationStarted;
    }

    private void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("heh");
        if (e.Position.X < 200)
        {
            initialPoint = e.Position;
            isSwiping = true;
        }
    }

    private void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
       if (e.IsInertial && isSwiping)
        {
            Point currentPoint = e.Position;
            if (currentPoint.X - initialPoint.X >= 40)
            {
                isSwiping = false;
                e.Complete();

                System.Diagnostics.Debug.WriteLine("finished swipe :)");
            }
        }
    }

    private Point initialPoint;
    private Boolean isSwiping;

(ここでもデフォルトの空のページを省略)

4

1 に答える 1

5

たとえば、ManipulationMode="TranslateX" などのコントロールに ManipulationMode を設定し、ヒット テストにコントロールが応答するようにする必要があります (つまり、背景がない場合は、背景を透明に設定します)。

繰り返しになりますが、スワイプのサポートが組み込まれている ListView を使用しないのはなぜですか?

于 2013-03-22T17:54:31.140 に答える