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
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?
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.
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
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