2

I am trying to implement a horizontal swipe event handler in the following app. However, the gr_CrossSliding cross sliding event handler never fires.

What do I need to do to fire gr_CrossSliding?

public sealed partial class MainPage : Page
{
    private GestureRecognizer gr;

    public MainPage()
    {
        this.InitializeComponent();

        gr = new GestureRecognizer();
        gr.GestureSettings = GestureSettings.CrossSlide;
        gr.CrossSlideHorizontally = true;

        gr.CrossSliding += gr_CrossSliding;
    }

    void gr_CrossSliding(GestureRecognizer sender, CrossSlidingEventArgs args)
    {
        // handle swipe event
    }
}
DaveDev
  • 41,155
  • 72
  • 223
  • 385
  • AFAIK with *GestureRecognizer* you will have to use *Pointer events* (Pressed/Moved/Closed) and pass information to *GestureRecognizer*. Maybe [this answer](http://stackoverflow.com/a/12334126/2681948) will help. – Romasz Sep 10 '14 at 14:22
  • I've been trying that answer but it's getting me nowhere. I can't get gr_CrossSliding to fire no matter what. The Pointer events fire fine but not the swipe. – DaveDev Sep 10 '14 at 15:02
  • nevermind..... I got it working – DaveDev Sep 10 '14 at 15:16

1 Answers1

0

You need to set the GestureRecognizer on the handlers of the UI Element that is getting the gestures.

In this case, I'm using a Grid (GrdFoto).

public MainPage()
{
    this.InitializeComponent();

    gestureRecognizer.GestureSettings = Windows.UI.Input.GestureSettings.Drag;
    gestureRecognizer.Dragging += gestureRecognizer_Dragging;

    GrdFoto.PointerPressed += GrdFoto_PointerPressed;
    GrdFoto.PointerMoved += GrdFoto_PointerMoved;
    GrdFoto.PointerReleased += GrdFoto_PointerReleased;
    GrdFoto.PointerCanceled += GrdFoto_PointerCanceled;
}



void GrdFoto_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    this.gestureRecognizer.ProcessDownEvent(e.GetCurrentPoint(this.GrdFoto));
    this.GrdFoto.CapturePointer(e.Pointer);
    e.Handled = true;
}

void GrdFoto_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    this.gestureRecognizer.ProcessMoveEvents(e.GetIntermediatePoints(this.GrdFoto));
}

void GrdFoto_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    this.gestureRecognizer.ProcessUpEvent(e.GetCurrentPoint(this.GrdFoto));   
    e.Handled = true;
}

void GrdFoto_PointerCanceled(object sender, PointerRoutedEventArgs e)
{
    this.gestureRecognizer.CompleteGesture();
    e.Handled = true;
}

void gestureRecognizer_Dragging(GestureRecognizer sender, DraggingEventArgs args)
{
    // Drag completed.
}
Roberto Orozco
  • 579
  • 7
  • 11