2016-04-22 4 views
2

J'ai une grille avec 4 UIElement. J'ai souscrit à l'événement ManipulationStarted et ManipulationCompleted sur tous les éléments.Comment tirer ManipulationDémarré sur plusieurs UIElement avec le même contact?

Sur ManipulationStarted, je change la couleur de l'élément et sur ManipulationCompleted, je le rétablis à l'original.

Cela fonctionne, mais seulement pour un article, si je tape sur un article et puis, sans laisser mon doigt, je passe à un autre, il ne change pas de couleur.

Pour le rendre plus clair:

This is the normal situation

C'est ce que je vois quand j'ouvrir l'application. 4 UIElements (Rectangle) dans une grille.

This is what happens when I press on an element

C'est ce que je vois quand je prends le doigt sur un rectangle.

This is what I want to happen

Voici ce que je veux arriver quand je prends le doigt sur un rectangle, puis je déplace le doigt sur un autre sans lever le doigt, mais il ne se produit pas. Cela fonctionne juste sur un rectangle.

Voici le code des événements qui sont sur chaque rectangle:

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

Est-ce que vous essayez de faire de l'interaction quelque chose comme si vous teniez un rectangle et déplacez votre doigt vers un autre rectangle, que le rectangle que vous déplacez votre doigt devient de la même couleur que le rectangle origine de votre mouvement? –

+0

C'est plus comme si vous aviez une couleur par défaut (pourpre, dans mon cas) qui devrait être définie pour chaque rectangle que vous touchez lorsque vous bougez votre doigt. Lorsque vous relâchez votre doigt, ils retrouvent leur couleur d'origine. – AshleyT

+1

Ouf, c'est un large, ne pouvait parler que de moi-même, mais ça prendrait du temps pour bricoler. Vos manipulations/événements tactiles vont être liés à l'objet qui les initie. Votre scénario dans mon esprit nécessiterait une détection de collision essentiellement. Ou .... si elles sont de taille fixe, il serait beaucoup plus facile d'avoir une logique comme si la manipulation> largeur (ou hauteur) de l'objet puis le frère modifie sa couleur, que vous pourriez passer à ce qui est à côté ou au dessus/dessous sur si c'est une direction X ou Y de la manipulation. –

Répondre

0

Résolu! : D

J'ai utilisé l'événement MouseEnter sur les rectangles pour changer la couleur et MouseLeave sur la grille qui les contient pour le remettre à l'origine! Cela fonctionne parfaitement! : D