wpf: Klicken mit der linken Maustaste wird nicht erkannt

8

Ich neu in WPF und wenn ich das Material erfahre ich konfrontiert mit seltsamen Thema.

Ich bilde einen Button, lege Layer mit Textblock ein und ich möchte erkennen, wo der User "auf den Button selbst klickt, auf" ersten "," zweiten "oder" dritten "(ich gebe eine Nachricht aus).

Alles funktioniert gut, außer dass die Schaltfläche kein Ereignis auslöst, wenn der Benutzer mit der linken Taste klickt (nur mit der mittleren oder rechten Taste).

also meine Frage: Warum habe ich kein Nachrichtenfeld erhalten, wenn ich mit der linken Maustaste auf den Button drücke (und ich die msg-Box mit anderen Maustasten bekomme)?

XAML:

%Vor%

Code:

%Vor%

Danke!

    
AsfK 13.04.2014, 09:06
quelle

2 Antworten

13
Das

MouseDown -Ereignis ist ein bubbling event , das von seinem Ursprung zu seinem Stammelternteil sprudelt. Aber das Ereignis Click verbraucht das Ereignis MouseDown und verhindert, dass das Ereignis bis zum Button bubblert.

Sie können das PreviewMouseDown -Ereignis verwenden, das ein tunnelling event ist, das von root zu seinem Ursprung tunnelt. So erhält der Button zuerst dieses Event und dann den nachfolgenden textBlock.

%Vor%

Siehe den folgenden Schnappschuss für das klare Bild:

AKTUALISIEREN

Hook only PreviewMouseDown event on button und entferne Handler von einzelnen textBlocks. Suchen Sie nach e.OrignialSource , um zu sehen, ob TextBlock die ursprüngliche Originalquelle oder Schaltfläche ist.

%Vor%

XAML

%Vor%     
Rohit Vats 13.04.2014, 09:12
quelle
2

Es funktioniert nicht, weil das erste Feuer ein Ereignis bei Button.Click ist und wenn es funktioniert, steht es in Konflikt mit den Ereignissen wie: MouseLeftButtonDown , MouseUp , MouseDown .

Damit dieses Ereignis funktioniert, müssen Sie ein PreviewMouseDown -Ereignis definieren, da es sich um ein Tunnel -Ereignis handelt. Dies bedeutet, dass es in der VisualTree-Hierarchie untergeht ausgelöst vor den Bubble-Events.

Alternativ können Sie das Button.Click -Ereignis für Button verwenden.

    
Anatoliy Nikolaev 13.04.2014 09:13
quelle

Tags und Links