2012-09-28 11 views
15

Ich habe den folgenden Code:Griff Swipe nach oben, nach unten wischen, Swipe Left & Swipe rechts Gestures in einer WinRT App

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"); 
} 

Aber ich habe keine Ahnung, wie die Manipulation Ereignisse zu verwenden. Kannst dir jemand beschreiben, wie man mit den Gesten nach oben, unten, links und rechts wischt?

+1

Ich habe nicht mit WinRT Gesten gearbeitet, aber ein kurzer Blick auf die MSDN Ich würde wetten, dass Sie auf verschiedene Eigenschaften der Argumente während der "Delta" (oder andere) Ereignisse zugreifen können. Zum Beispiel enthält 'ManipulationDeltaRoutedEventArgs.Velocities' eine Reihe von Daten bezüglich der Richtung/Winkel/Skalierung Eingaben vom Benutzer. Ich kann nicht sagen, ob das "der Eine" ist, den du dir ansehen solltest, aber vielleicht gibt es dir einen Anfang. –

Antwort

21

Manipulationsereignisse liefern Ihnen die Übersetzungswerte. Manipulation Delta wird kontinuierlich ausgelöst, bis Ihre Manipulation zusammen mit der Trägheit abgeschlossen ist. In diesem Fall prüfen Sie, ob es sich bei der Bewegung um eine Trägheit handelt (eine normale Bewegung sollte nicht als Wischen betrachtet werden), und ermitteln Sie den Unterschied zwischen der anfänglichen und der aktuellen Position.

Sobald der Schwellenwert erreicht ist, feuern Sie das Streichen nach oben/unten/links/rechts. Und stoppen Sie die Manipulation sofort, um zu vermeiden, dass das gleiche Ereignis immer wieder ausgelöst wird.

folgenden Code wird Ihnen helfen,

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(); 
      } 
     } 
    } 
+3

Es gibt keine Notwendigkeit für mehrere Ereignisse. Verwenden Sie einfach 'e.Cumulative.Translation.X'. –

4

habe ich versucht, die Antwort von XAML-Liebhaber, aber es war nicht so genau für mich (IsIntertial immer für mich da wieder falsch kam). Ich implementierte etwas anderes (ich antwortete auf einen früheren Beitrag eines verwandten Themas hier Handling Swipe Guesture in Windows 8 Grid) für jeden, der etwas anderes ausprobieren wollte.

Verwandte Themen