Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Problem bei Verwendung von Touch & MultiTouch zusammen (e.Handled = true)
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Joetempes am .
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

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
Zitat
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?
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Joetempes am .
Attachments
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo Joetempes,

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

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers