2011-12-05 2 views
0

J'ai trouvé un problème de prise étrange dans mon application. J'ai 42 boutons disposés 6x7 sous la forme d'un calendrier. Chaque bouton appelle la même fonction OnDoubleTap qui est l'un des événements d'un bouton.Problèmes lors d'un double appui sur Windows phone

Le problème est que les frappes successives sur deux boutons sont traitées comme un double appui sur le second bouton taraudé.

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
     // function 
} 

cette fonction est associée à tous les 42 boutons par le code XAML comme celui-ci

<Button x:Name="b00" Content="" Height="60" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Foreground="#FF171717" BorderThickness="0" Hold="OnButtonLongPress" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}" /> 
<Button x:Name="b01" Content="" Height="60" Canvas.Left="68" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b02" Content="" Height="60" Canvas.Left="136" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b03" Content="" Height="60" Canvas.Left="204" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b04" Content="" Height="60" Canvas.Left="272" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 

Toute idée pourquoi cela se passe?

Alfah

+0

Je ne sais pas si elle est directement liée à votre problème, mais la manipulation à la fois la 'Click' et les événements 'DoubleTap' sont une route qui est susceptible de provoquer des problèmes car les deux seront déclenchés lorsque l'utilisateur double tapera –

+0

@Matt Toute suggestion sur la façon dont je peux empêcher cela. Ces 42 boutons sont des dates et le double appui ouvre une page où l'on peut ajouter des notes sur la date. Donc, deux pressions sur des boutons différents ouvre une page pour ajouter des notes sur le deuxième bouton/date tapés qui n'est pas du tout un comportement désiré. – alfah

+1

manipulant à la fois le simple et le double tap (clic est, en ce qui concerne l'utilisateur d'un dispositif à écran tactile, le même que le robinet) conduit à la confusion et n'est pas détectable. Les utilisateurs ne s'attendent pas non plus à ce qu'un "bouton" réponde aux commandes simples et doubles séparément. Utilisez un menu contextuel pour accéder aux fonctionnalités secondaires. Vous devez également utiliser le calendrier intégré comme référence pour les fonctionnalités attendues car c'est le comportement attendu par les utilisateurs d'une interface de calendrier. –

Répondre

1

J'ai résolu le problème en capturant le premier clic et le second clic. Vérifiez les noms de l'expéditeur et ne faites la fonction que si les deux ont la même chose.

Le premier clic est capturé sur la fonction OnClick et la seconde à la fonction OnDoubleTap

public void OnClick(object sender, RoutedEventArgs e) 
{ 
    Button nbut = sender as Button; 
    m_captureFirstClick = nbut.Name; 
} 

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    Button temp = sender as Button; 
    if (temp.Name == m_captureFirstClick) 
    { 
     // do what you want to do 
    } 
} 

Alfah

Questions connexes