33 Stimmen

Warum hat die WPF-Rahmensteuerung kein Mousedoubleclick-Ereignis?

Warum hat das WPF-Randsteuerelement kein Doppelklick-Ereignis? Ich habe eine ItemsControl mit einigen Layouts für ein DataTemplate darin. Ich möchte das Doppelklick-Ereignis behandeln, um einen Detaildialog anzuzeigen, aber der Rand, mein Layoutcontainer, scheint das Ereignis nicht freizugeben.

Irgendwelche Vorschläge, wie man entweder auf das Doppelklick-Ereignis zugreifen oder das XAML neu gestalten kann, um es möglich zu machen?

65voto

Jaster Punkte 7881

Verwenden Sie einfach InputBindings.

Im Allgemeinen vermeiden Sie es, Ereignisse zu verwenden, wenn Sie keine Steuerelemente in WPF entwickeln. Normalerweise ist die Verwendung von ereignisbasierten Code-Behind-Ereignissen ein deutlicher Hinweis auf einen MVVM Pattern Break.

16voto

John Bowen Punkte 23673

MouseDoubleClick wird auf Control deklariert, daher benötigen Sie lediglich eine Instanz von Control in Ihrem ItemTemplate. Das einfachste, was Sie tun können, ist die Verwendung der Basisklasse Control, die kein anderes Verhalten hat, und ihr einfach eine angepasste Vorlage mit dem zu geben, was sich jetzt in Ihrem ItemTemplate befindet.

7voto

Lukasz Madon Punkte 14194

Aktualisierung: Entschuldigung, mein Fehler - späte Stunde

Innerhalb Ihres Maustasten-Drück-Ereignisses erhalten Sie den Klickzähler

 //  e.Handled = true;  optional

 if (e.ClickCount > 1)
 {
    // hier kommt Doppelklicken und mehr :)
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X