2011-01-07 3 views
4

Je rencontre un énorme problème, j'ai essayé tout ce que je pouvais, mais je n'ai trouvé aucune solution. J'ai un listBox, avec un DataTemplate. Je souhaite utiliser les événements MouseLeftButtonDown et MouseLeftButtonUp pour vérifier que l'élément sélectionné est le même que celui sur lequel l'utilisateur a cliqué.MouseLeftButtonDown non reconnu par un contrôle ListBox?

Le problème est l'événement MouseLeftButtonUp est reconnu mais pas l'événement MouseLeftButtonDown.

Une partie de mon code XAML:

<ListBox Grid.Row="1" MouseLeftButtonDown="listBox_Faits_MouseLeftButtonDown" 
         MouseLeftButtonUp="listBox_Faits_MouseLeftButtonUp"> 

Le code derrière:

private void listBox_Faits_MouseLeftButtonUp(object sender, MouseEventArgs e) 
    { 
     ... 
    } 
    private void listBox_Faits_MouseLeftButtonDown(object sender, MouseEventArgs e) 
    { 
     ... 
    } 

Est-ce que quelqu'un sait pourquoi?

Merci, vous

Cordialement,

Flo

Répondre

11

Cela se produit parce que l'événement est MouseLeftButtonDown se traité par l'élément de liste. Pour gérer les événements déjà traités vous pouvez vous abonner en code-behind et spécifier que vous voulez que cela gérer les événements, comme manutentionnés:

listBox_Faits.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(listBox_Faits_MouseLeftButtonDown), true); 
+0

je vais suggérer d'essayer l'événement PreviewMouseLeftButtonDown aussi, mais cette façon vous donne plus contrôle. – Tom

+0

Hum ... Pavlo, j'ai essayé votre solution, mais l'événement n'est pas reconnu! – Flo

+0

Ça devrait marcher. Veuillez vérifier à nouveau. N'oubliez pas de passer "true" au dernier paramètre de AddHandler! En outre, comme @Tom mentionné, vous pouvez vous abonner à l'événement PreviewMouseLeftButtonDown. –

Questions connexes