Silverlight 5 Doppelklick gibt ClickCount immer als 1 zurück

8

Ich habe Verhalten für DataGrid erstellt, um einen Doppelklick zu erkennen:

%Vor%

Alles scheint gut zu sein, außer dass es nicht mehrere Klicks registriert. In OnMouseLeftButtonUp ClickCount immer 1. Weiß jemand warum?

    
katit 19.03.2012, 03:54
quelle

5 Antworten

11

Ich habe eine sehr einfache Lösung gefunden. Ersetzen Sie einfach die Registrierungssyntax für den Ereignishandler

%Vor%

mit der AddHandler -Syntax

%Vor%

Auf diese Weise kann das magische boolesche handledEventsToo -Argument angegeben werden.

Dies wird auch gehandhabte Ereignisse behandeln.

    
herzmeister 19.04.2012 13:58
quelle
3

Nun, das größere Problem hier ist, dass wenn Sie auf die Zeilen eines DataGrid klicken, MouseLeftButtonDown nicht ausgelöst wird, da dieser Klick auf Zeilenebene behandelt wird.

Ich habe es schon lange aufgegeben, direkt mit einigen Steuerelementen umzugehen. Ich habe meine eigene abgeleitete Version von DataGrid, DataForm und so weiter. Das macht meine Lösung einfach zu implementieren, da ich die Vanilla-Versionen sowieso nicht verwende.

Ich habe ein neues Ereignis namens ClickIncludingHandled hinzugefügt, das ein bisschen wortreich ist, aber es beschreibt genau, was vor sich geht und wird direkt darunter angezeigt. Klicken Sie auf IntelliSense - wenn das Steuerelement ein Click-Ereignis hat.

Wie auch immer, unten ist meine Implementierung davon. Sie können dieses Ereignis dann abonnieren und mithilfe von ClickCount ermitteln, wie viele Klicks erfasst werden sollen. Ich habe bemerkt, dass es ein bisschen langsam ist, aber es funktioniert sauber.

%Vor%     
Doguhan Uluca 26.03.2012 19:03
quelle
1

MouseButtonUp ist in Bezug auf die Erfassung von ClickCount in WPF und Silverlight defekt (es wurde bereits mehrfach aufgezeichnet, aber Microsoft hat sich entschieden, es nicht zu beheben). Sie müssen MouseButtonDown-Ereignisse verwenden.

    
Jeff 30.03.2012 04:36
quelle
0

Nicht 100% sicher, dass dies das Problem ist, aber ich bemerke, dass Pete Browns Beispiel stattdessen MouseLeftButtonDown verwendet:

Ссылка

    
James Manning 19.03.2012 04:34
quelle
0

Ich stieß auf genau dieses Problem. Ich konnte es nicht auf eine vernünftige Art und Weise lösen, also arbeitete ich so herum:

%Vor%

Es ist schmutzig, aber es funktioniert.

    
Duncan Matheson 30.03.2012 04:09
quelle

Tags und Links