2010-12-03 11 views

Respuesta

41

Puede usar el GestureService en el Silverlight Control Toolkit for Windows Phone 7. En el elemento de interfaz de usuario, añadir el siguiente fragmento de código (después de haber referenciado DLL de la caja de herramientas en su proyecto WP7) -

<toolkit:GestureService.GestureListener> 
    <toolkit:GestureListener Flick="OnFlick"/> 
</toolkit:GestureService.GestureListener> 

implementar el controlador de OnFlick en el archivo de código subyacente, como tal -

private void OnFlick(object sender, FlickGestureEventArgs e) 
{ 
    var vm = DataContext as SelectedCatalogViewModel; 
    if (vm != null) 
    { 
     // User flicked towards left 
     if (e.HorizontalVelocity < 0) 
     { 
     // Load the next image 
     LoadNextPage(null); 
     } 

     // User flicked towards right 
     if (e.HorizontalVelocity > 0) 
     { 
     // Load the previous image 
     LoadPreviousPage(); 
     } 
    } 
} 

Espero que esto ayude, indyfromoz

+0

¿Qué significa "var vm = DataContext como SelectedCatalogViewModel;" ¿media? – Shaireen

+1

La página que requiere un gesto deslizado implementado está vinculada a un ViewModel. La clase ViewModel es SelectedCatalogViewModel y estoy usando el RelayCommand de MVVMLight (MVVM toolkit) para conectar los eventos del código subyacente con el ViewModel subyacente. Perdón por la confusión. Cheers, indyfromoz – indyfromoz

+2

También es posible que desee asegurarse de que la velocidad horizontal sea mayor (en un orden de magnitud, incluso) que la velocidad vertical, de modo que los deslizamientos diagonales o en su mayoría verticales no activen 'LoadNextPage' y' Métodos LoadPreviousPage'. – pho79

7

Si no desea utilizar el kit de herramientas de Silverlight puede utilizar el marco de XNA.

http://www.nickharris.net/2010/11/using-touchpanel-for-gestures-in-windows-phone-7/

+0

Pero en lo que dicen los documentos ... el framework XNA es para juegos ... ¿No es así? – Shaireen

+0

Sí, pero el marco XNA funciona en WP7 para juegos WP7, por lo que puede hacer referencia a la parte de gestos del marco para una aplicación normal. Significa que no tiene que depender de bibliotecas de terceros. – Phill

5

Prueba esto:

using Microsoft.Phone.Controls; 

public partial class MyControl 
{ 
    public MyControl() 
    { 
     InitializeComponent(); 

     var gl = GestureService.GetGestureListener(asd); 
     gl.Flick += new EventHandler<FlickGestureEventArgs>(GestureListener_Flick); 
    } 

    private void GestureListener_Flick(object sender, FlickGestureEventArgs e) 
    { 
     if (e.Direction == Orientation.Horizontal) 
     { 
      if (e.HorizontalVelocity < 0) // determine direction (Right > 0) 
      { 
       //Some Action 
      } 
      else 
      { 
       //Some Action 
      } 
     } 
    } 
} 
Cuestiones relacionadas