Categorías destacadas
programacion php    
Artículo
0
¡votar!

 Evento Double Tap Windows Phone 7

Recordamos que el Double-Tap son dos gestos Tap en un periodo de tiempo muy corto, no existe este evento en ningún objeto con lo que aprovecharemos el behaivor anterior para extenderlo para detectar estos dos Tap, incluiremos una propiedad donde indicaremos el tiempo que queremos que pase entre gesto y gesto, a este behaivor le llamaremos DoubleTapAction, os dejo el código a continuación.

evento double tap
public class DoubleTapAction : TapAction{
public event EventHandler DoubleTap;
public int DoubleTapTimeoutInMilliseconds {
get { return (int)GetValue(DoubleTapTimeoutInMillisecondsProperty); }
set { SetValue(DoubleTapTimeoutInMillisecondsProperty, value); } 
}
public static readonly DependencyProperty DoubleTapTimeoutInMillisecondsProperty =  DependencyProperty.Register("DoubleTapTimeoutInMilliseconds", typeof(int),
typeof(DoubleTapAction), new PropertyMetadata(1000)); 
protected DateTime? FirstTap { get; set; } 
protected override void OnTap(){ 
base.OnTap(); 
if (FirstTap.HasValue && FirstTap.Value.AddMilliseconds(DoubleTapTimeoutInMilliseconds) > DateTime.Now){ 
OnDoubleTap(); 
FirstTap = null; 
}else{ 
FirstTap = DateTime.Now; 
}
} 
protected virtual void OnDoubleTap(){ 
if (DoubleTap != null){
DoubleTap(this.AssociatedObject, EventArgs.Empty);
}
}
}


En el código anterior podéis ver que se ha definido la propiedad DoubleTapTimeoutInMilliseconds que nos indicará el tiempo entre gestos Tap y se ha definido por defecto que sea de 1 segundo.

public class TapAction : Behavior{
public event EventHandler Tap; 
protected bool MouseDown { get; set; } 
protected override void OnAttached(){ 
base.OnAttached(); 
this.AssociatedObject.MouseLeftButtonDown += AO_MouseLeftButtonDown; 
this.AssociatedObject.MouseLeftButtonUp += AO_MouseLeftButtonUp; 
} 
protected override void OnDetaching(){ 
this.AssociatedObject.MouseLeftButtonDown -= AO_MouseLeftButtonDown; 
this.AssociatedObject.MouseLeftButtonUp -= AO_MouseLeftButtonUp; 
base.OnDetaching(); 
} 
void AO_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){ 
if (MouseDown){
OnTap(); 
} 
MouseDown = false; 
} 
void AO_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ 
MouseDown = true; 
} 
protected virtual void OnTap(){ 
if (Tap != null){
Tap(this.AssociatedObject, EventArgs.Empty); 
}
}
}


El XAML del nuevo Border sería
<Border BorderBrush="#FFF11717" BorderThickness="2" Margin="0,118,21,0" Background="#FFCC8787" HorizontalAlignment="Right" Width="160" Height="90" VerticalAlignment="Top">
<i:Interaction.Behaviors>
<local:DoubleTapAction DoubleTap="DoubleTapGesture_DoubleTap"/>
</i:Interaction.Behaviors>
</Border>
<Border BorderBrush="#FFF11717" BorderThickness="2" Margin="0,118,21,0" Background="#FFCC8787" HorizontalAlignment="Right" Width="160" Height="90" VerticalAlignment="Top">
<i:Interaction.Behaviors> 
<local:DoubleTapAction DoubleTap="DoubleTapGesture_DoubleTap"/>
</i:Interaction.Behaviors>
</Border>
private void DoubleTapGesture_DoubleTap(object sender, EventArgs e){
MessageBox.Show("Has hecho Doucble-Tap en el Border!");
}

Autor del artículo: Oskar Álvarez
   
Publicado por:
Angel Carrero
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon