15

私は次のコードを持っています:

public MainPage()
{
    this.InitializeComponent();
    this.ManipulationStarting += MainPage_ManipulationStarting;
    this.ManipulationStarted += MainPage_ManipulationStarted;
    this.ManipulationInertiaStarting += MainPage_ManipulationInertiaStarting;
    this.ManipulationDelta += MainPage_ManipulationDelta;
    this.ManipulationCompleted += MainPage_ManipulationCompleted;
}
void MainPage_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarting");
}
void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarted");
}
void MainPage_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationInertiaStarting");
}
void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationDelta");
}
void MainPage_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationCompleted");
}

しかし、操作イベントの使用方法がわかりません。上下左右にスワイプするジェスチャーの処理方法を誰か説明できますか?

4

3 に答える 3

22

操作イベントは、変換値を提供します。操作デルタは、慣性とともに操作が完了するまで継続的に発砲します。この場合、移動が慣性であるかどうかを確認し(通常の移動はスワイプと見なされるべきではありません)、初期位置と現在の位置の違いを検出します。

しきい値に達したら、上/下/左/右のスワイプイベントを発生させます。また、同じイベントが何度も発生しないように、操作をすぐに停止してください。

次のコードはあなたを助けます、

    private Point initialpoint;

    private void Grid_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
    {
        initialpoint = e.Position;
    }

    private void Grid_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        if (e.IsInertial)
        {
            Point currentpoint = e.Position;
            if (currentpoint.X - initialpoint.X >= 500)//500 is the threshold value, where you want to trigger the swipe right event
            {
                System.Diagnostics.Debug.WriteLine("Swipe Right");
                e.Complete();
            }
        }
    }
于 2012-09-30T15:21:16.363 に答える
4

XAML愛好家による回答を試しましたが、それは私にとってはそれほど正確ではありませんでした(IsIntertialは常にfalseに戻ってきました)。別のことを試してみたい人のために、別の方法を実装しました( Windows 8グリッドでのスワイプゲストの処理については、関連トピックの以前の投稿に返信しました)。

于 2012-11-15T18:03:27.253 に答える
2

GestureRecognizer.CrossSlidingイベントをご覧ください。EdgeGestureクラス、およびサンプルもあります: EdgeGestureサンプルジェスチャサンプル

于 2012-12-10T18:13:37.500 に答える