2016-04-22 11 views
2

Ich habe ein Grid mit 4 UIElement. Ich habe das Ereignis ManipulationStarted und ManipulationCompleted für alle Elemente abonniert.Wie man ManipulationStarted auf mehreren UIElement mit der gleichen Berührung auslösen?

Bei ManipulationStarted ändere ich die Farbe des Elements und auf ManipulationCompleted setze ich es auf die ursprüngliche zurück.

Das funktioniert, aber nur für einen Gegenstand, wenn ich auf ein Objekt tippe und dann, ohne meinen Finger zu verlassen, gehe ich zu einem anderen, es ändert sich nicht die Farbe.

Um es deutlicher zu machen:

This is the normal situation

Dies ist, was ich sehe, wenn ich die App öffnen. 4 UIElements (Rechteck) in einem Raster.

This is what happens when I press on an element

Dies ist, was ich sehe, wenn ich den Finger auf ein Rechteck halten.

This is what I want to happen

Dies ist, was ich passieren soll, wenn ich mit dem Finger auf einem Rechteck halten und dann bewege ich den Finger auf einem anderen, ohne den Finger zu heben, aber es geschieht nicht. Es funktioniert nur auf einem Rechteck. Diese

ist der Code der Ereignisse, die auf jedem Rechteck sind:

private void Rectangle_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) 
{ 
    e.Handled = true; 
    if(sender is Rectangle) 
     ((Rectangle)sender).Fill = new SolidColorBrush(Colors.Purple); 
} 

private void Rectangle_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) 
{ 
    e.Handled = true; 
    if (sender is Rectangle) 
     ((Rectangle)sender).Fill = originalColor; 
} 
+0

Versuchen Sie, die Interaktion so zu gestalten, als ob Sie ein Rechteck halten und Ihren Finger zu einem anderen Rechteck bewegen, als das Rechteck, mit dem Sie Ihren Finger bewegen, dieselbe Farbe wie das Rechteck, aus dem Ihre Bewegung stammt. –

+0

Es ist eher so, dass Sie eine Standardfarbe haben (in meinem Fall lila), die auf jedes Rechteck eingestellt sein sollte, das Sie berühren, während Sie Ihren Finger bewegen. Wenn Sie Ihren Finger loslassen, erhalten sie ihre ursprüngliche Farbe zurück. – AshleyT

+1

Puh, das ist eine breite, könnte nur für mich selbst sprechen, aber das würde ein wenig Bastelzeit brauchen. Ihre Manipulations-/Berührungsereignisse werden mit dem Objekt verknüpft, das sie initiiert. Ihr Szenario würde im Grunde eine Kollisionserkennung erfordern. Oder .... wenn sie von fester Größe sind, wäre es viel einfacher, Logik zu haben, wenn Manipulation> Breite (oder Höhe) von Objekt dann Geschwister ändert seine Farbe, die Sie auf was auch immer neben oder über/unter basieren könnte ob es eine X- oder Y-Richtung der Manipulation ist. –

Antwort

0

gelöst! : D

Ich habe MouseEnter Ereignis auf den Rechtecken verwendet, um die Farbe und MouseLeave auf dem Grid zu ändern, das sie enthält, um es zurück zu dem ursprünglichen festzulegen! Es funktioniert einwandfrei! : D