Freigeben über


Mouse.MouseDown Angefügtes Ereignis

Definition

Tritt auf, wenn eine Maustaste gedrückt wird.

see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler

Hinweise

Um zu ermitteln, welche Maustaste gedrückt wurde, überprüfen Sie die ChangedButton Eigenschaft in der, die MouseButtonEventArgs an den Handler übergeben wurde.

Dies ist ein angefügtes Ereignis. WPF implementiert angefügte Ereignisse als routingfähige Ereignisse. Angefügte Ereignisse sind im Grunde ein XAML-Sprachkonzept zum Verweisen auf Ereignisse, die für Objekte behandelt werden können, die dieses Ereignis nicht definieren. WPF erweitert das Ereignis, indem das Ereignis auch eine Route durchlaufen kann. Angefügte Ereignisse verfügen nicht über eine direkte Verarbeitungssyntax im Code. Um Handler für ein routingfähiges Ereignis im Code anzufügen, verwenden Sie eine festgelegte Add*Handler-Methode. Ausführliche Informationen finden Sie unter Übersicht über angefügte Ereignisse.

Das Windows Presentation Foundation-Framework (WPF) baut auf diesem angefügten Ereignis auf, indem es es als zwei verschiedene CLR-Ereignisse (Common Language Runtime) für UIElement und ContentElementund MouseLeftButtonDown darstelltMouseRightButtonDown. Diese Implementierungen behandeln das zugrunde liegende MouseDown Ereignis und lesen die Argumente des Ereignisses, um zu bestimmen, ob die linke oder rechte Maustaste betroffen war. Für eine Maus mit drei Tasten gibt es keine Ereignisunterstützung auf Frameworkebene für die mittlere Schaltfläche. Sie sollten das MouseDown -Ereignis verwenden und den MiddleButton Zustand in den Ereignisargumenten überprüfen.

Wichtig

Einige ContentElement abgeleitete Klassen, die ein steuerelementähnliches Verhalten aufweisen, z. B Hyperlink. , können eine inhärente Klassenbehandlung für Maustastenereignisse aufweisen. Das Nach-unten-Ereignis mit der linken Maustaste ist das wahrscheinlichste Ereignis, das in einem Steuerelement über die Klassenbehandlung verfügt. Die Klassenbehandlung kennzeichnet häufig das zugrunde liegende Mouse Klassenereignis als behandelt. Sobald das Ereignis behandelt markiert wurde, werden andere instance Handler, die an dieses Element angefügt sind, normalerweise nicht ausgelöst. Alle anderen Klassen- oder instance-Handler, die an Elemente in der Sprudelrichtung zum Stamm in der UI-Struktur angefügt sind, werden ebenfalls normalerweise nicht ausgelöst.

Sie können das Problem beheben, das im vorherigen wichtigen Hinweis beschrieben ist, und weiterhin Ereignisse für Ereignisse mit der linken Maustaste in einer abgeleiteten Klasse mit Klassenbehandlung erhalten MouseDown , indem Sie eine der folgenden Lösungen verwenden:

  • Fügen Sie Handler für das PreviewMouseDown Ereignis an, das nicht als von den Steuerelementen behandelt markiert wird. Beachten Sie, dass die Route, da es sich um ein Vorschauereignis handelt, am Stamm beginnt und zum Steuerelement tunnelt.

  • Registrieren Sie einen Handler für das Steuerelement prozedural, indem Sie die Signaturoption aufrufen AddHandler und auswählen, die es Handlern ermöglicht, auf Ereignisse zu lauschen, auch wenn sie bereits in den Routingereignisdaten als behandelt gekennzeichnet sind.

Achten Sie bei weitergeleiteten Ereignissen, die sich auf die Maus beziehen, darauf, wie oder wann Sie sie markieren. Die Schwierigkeit, geeignete Entscheidungen darüber zu treffen, ob übergeordnete Elemente auch über eine bestimmte Mausaktion informiert werden sollten, ist in der Tat der Grund, warum das WPF-Framework das Modell für die Anzeige des zugrunde liegenden Mausroutenereignisses als CLR-Ereignisse entlang der Route ausgewählt hat. Ähnliche Probleme bestehen bei tunnelnden Mausereignissen. Sollten Sie das Ereignis behandeln und es nicht von weiteren untergeordneten Elementen in Richtung Quelle behandeln lassen, und wie würde sich dies auf das Kompositing eines Steuerelements auswirken, bei dem die Compositing-Teile möglicherweise Mausverhalten erwartet haben?

Informationen zum Routingereignis

Bezeichnerfeld MouseDownEvent
Routingstrategie Bubbling
Delegat MouseButtonEventHandler

Gilt für: