Laden...

Problem bei Verwendung von Touch & MultiTouch zusammen (e.Handled = true)

Erstellt von Joetempes vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.029 Views
Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 12 Jahren
Problem bei Verwendung von Touch & MultiTouch zusammen (e.Handled = true)

Hallo,

ich will auf einem Polygon Touch-Events verarbeiten, TouchDown kommt an, aber im TouchUp + TouchMove kommt nichts.

So erzeuge ich das Polygon:


        private Polygon createPolygon(string name, PointCollection points)
        {
            Polygon polygon = new Polygon();
            polygon.Name = name;
            polygon.Points = points;
            polygon.Style = (Style)FindResource("PolygonStyle");
            polygon.MouseLeftButtonDown += this.polygone_MouseLeftButtonDown;
            polygon.TouchDown += this.polygon_TouchDown;
            polygon.TouchUp += this.polygon_TouchUp;
            polygon.TouchMove += this.polygon_TouchMove;

            return polygon;
        }

Ein BreakPoint in polygon_TouchUp oder polygon_TouchMove wird nie erreicht.
Weiss jemand Rat?

Edit: Präzisierung

Meine Polygone liegen auf einem Bild, welches in einem Canvas liegt.
Registriere ich auf dem Canvas das TouchUp Event, kommt das Event.
Da nutzt es mir nur nichts, wie "leite" ich das Event an das jeweilige Polygone weiter?

Grüße

Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 12 Jahren

Ich kann mein Problem mittlerweile ziemlich genau identifizieren, aber leider noch nicht lösen. Ich hab auch deshalb mal den Topic-Title geändert....

Mein Problem entsteht dadurch, weil ich MonoTouch und MultiTouch in meiner Anwendung zusammen verwende.

Das TouchUp-Event kam nicht, weil ich im TouchDown-EventHandler das "e.Handled = true" nicht gesetzt hatte. Ist das gesetzt funktioniert der Touch, aber der MultiTouch nicht mehr, d.h. das Event Canvas.ManipulationStartingEvent wird nicht mehr ausgeführt.

Warum das so ist, ist mir klar (RoutedEvents), auch hier schön nachzulesen:
Übersicht über die Eingabe

Wenn das TouchDown-Ereignis (das heißt, die Handled-Eigenschaft ist false) nicht behandelt wird, erfasst die Bearbeitungsslogik die Fingereingabe für das Element und generiert die Bearbeitungsereignisse. Wenn die Handled-Eigenschaft im TouchDown-Ereignis auf true festgelegt wird, generiert die Bearbeitungslogik keine Bearbeitungsereignisse.

Da hätte ich dann erstmal ein Problem, entweder das Eine oder das Andere.
Dann habe ich weiter recherchiert und die Methode AddHandler entdeckt.

Wenn ich das aber so aufrufe:


        private void polygon_TouchDown(object sender, TouchEventArgs e)
        {
            this.touchHasMoved = false;
            this.touchPointDown = e.TouchDevice.GetTouchPoint(this.canvasOverview);
            e.Handled = true;
            this.canvasOverview.AddHandler(Canvas.ManipulationStartingEvent, new EventHandler<ManipulationStartingEventArgs>(this.canvasOverview_ManipulationStarting), true);
        }

...kommt in meinem Canvas.ManipulationStartingEvent Handler kein Event an.

Was mach ich falsch?

Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 12 Jahren

Hallo Community,

es lässt mir einfach keine Ruhe!
Ich starte hier noch einen letzten Versuch, indem ich ein Beispiel-Projekt beigefügt habe.
Hier ist alles so nachgebaut & auf den Fehler reduziert, wie in meinem richtigen Projekt.

Im Anhang findet Ihr eine VS-2010 Solution, mit einem .NET 4.0 Projekt,
die Interessante Codestelle ist: UserControlOverview, Zeile 97.

Wer es Testen möchte, benötigt ein multitouchfähiges Display.

Grüße

Joe

Edit, nach 2 Downloads eine neue Version hoch geladen.

1.044 Beiträge seit 2008
vor 12 Jahren

Hallo Joetempes,

das Problem hatte ich auch. Der Blogbeitrag sollte dir weiterhelfen.

zero_x

Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 12 Jahren

Hallo zero_x,

danke für den Link, aber ich glaube das trifft das Problem noch nicht. Leider ist das dortige Download-Beispiel auch down.

Weiterhin habe ich jetzt nochmal eine neue, erweiterte Version meiner Beispiel-Solution hoch geladen, und in den Kommentaren das Problem strukturierter geschildert (Zeile 97).

Es wäre nett von Dir wenn du nochmal drüber gucken könntest.

Gruß Joe