2013-03-17 5 views
5

Ich habe ein Canvas, mit einem Kind Kontrolle. Die untergeordneten Steuerelemente empfangen alle PreviewTouchDown- und PreviewTouchUp-Ereignisse in Ordnung - aber nach Aktivierung der Manipulation (IsManipulationEnabled = true) im Canvas-Bereich werden nur die "down" -Ereignisse für untergeordnete Objekte ausgelöst, aber die TouchUp- und PreviewTouchUp-Ereignisse werden überhaupt nicht ausgelöst.WPF TouchUp nicht ausgelöst, wenn die Elternmanipulation aktiviert ist

Irgendwelche Ideen, was hier vor sich geht?

Antwort

3

Sie müssen auch IsManipulationEnabled auf true auf dem untergeordneten Element festlegen.


Die Beziehung zwischen Berührung und Manipulationsereignissen in Input Overview/Touch and Manipulation erklärt, Abschnitt Die Beziehung zwischen Berührung und Manipulation Event:

Ein UIElement kann immer Berührungsereignis empfängt. Wenn die IsManipulationEnabled-Eigenschaft auf True festgelegt ist, kann ein UIElement Touch- und Manipulationsereignisse empfangen. Wenn das TouchDown-Ereignis nicht behandelt wird (dh die Handled-Eigenschaft ist falsch), erfasst die Manipulation Logik die Berührung des Elements und generiert die Manipulation Ereignisse. Wenn die Handled-Eigenschaft im TouchDown-Ereignis auf "True" festgelegt ist, generiert die Manipulationslogik keine Manipulationsereignisse, . Die folgende Abbildung zeigt die Beziehung zwischen Berührungsereignissen und den Manipulationsereignissen .

Berühren und Manipulationsereignisse

Touch and manipulation events

+0

Also gibt es keine Möglichkeit, sie beide zu bekommen? – Jaska

+0

Ich habe gerade einen eigenen Code gefunden, bei dem ich 'CaptureTouch' manuell von einem' PreviewTouchDown'-Handler aus aufrufen muss, der auch 'Handled = true' setzt. Und es gibt auch einen 'PreviewTouchUp'-Handler. Leider kann ich es momentan nicht testen, aber ich werde es morgen versuchen. – Clemens

+0

OK, Großartig, wenn du das kannst .. aber es macht mir nichts aus, wenn es zu mühsam ist, da ich schon die ganze Idee der Manipulation weggeworfen habe und entschieden habe, Maßstab und Drehungen selbst im TouchMove-Event zu berechnen. – Jaska

2

ich seine wissen ein Jahr alt, aber dies könnte jemand helfen: Für dieses Problem zu umgehen, können Sie „Stylus tippen Sie auf“ Ereignisse erfassen nur gut, wenn die Eltern Element hat IsManipulationEnabled = true

.... 

MyChildElement.StylusSystemGesture += MyChildElement_StylusSystemGesture; 

.... 

void MyChildElement_StylusSystemGesture(object sender, StylusSystemGestureEventArgs e) 
    { 
     if (e.SystemGesture == SystemGesture.Tap) 
      //Do something 
    } 
+0

Und ein Jahr später hast du meine geistige Gesundheit gerettet! Schließlich kann ich "Klicks" auf einem Element erkennen, auf dem Manipulationen aktiviert sind. Ein umschließender Knopf würde nicht einmal einen Klick erkennen, aber die Stift-Geste funktioniert. – ulatekh

Verwandte Themen