2013-05-14 3 views
0

Pour l'enregistrement: Je suis nouveau à Silverlight et XAML. J'essaye d'afficher simplement les coordonnées de la souris relatives dans ma toile (ou tout autre élément). Après avoir beaucoup lu sur le sujet, malheureusement, je n'ai pas encore pensé à cela. Mon projet Silverlight 5 utilise MVVM avec Caliburn micro.Afficher la position de la souris dans Silverlight 5, MVVM

Comment cela peut-il être fait? Apprécierait l'aide sur la mise en œuvre de cela.

Merci, Guy.

Répondre

2

Vous devez être un peu plus précis avec le contrôle auquel vous essayez d'obtenir ceci, mais avez-vous essayé de câbler quelque chose jusqu'à l'événement MouseMove? Comme MouseMove="Handle_MouseMove"

public void Handle_MouseMove(object sender, MouseEventArgs args) 
{ 
    mouseVerticalPosition = args.GetPosition(null).Y; 
    mouseHorizontalPosition = args.GetPosition(null).X; 
} 

Est-ce ce que vous cherchez?

Si vous voulez que cela se produise sur toute la toile, vous pouvez câbler à la place jusqu'à ce PointerMoved

Voir MouseEventArgs. Cela peut vous obtenir la position X et Y et il peut être utilisé avec les événements MouseUp, MouseDown et MouseMove.

+0

Comment cela peut-il être fait sans utiliser le code-behind? (Utilisation de MVVM) J'utilise Caliburn.Micro, mais je n'ai pas trouvé un moyen de lier la fonction d'événement MouseMove au ViewModel. –

0

Pour compléter TNW Réponse: Vous devez start mouse capture on object: MyElement.CaptureMouse()

Dans la méthode de gestionnaire, vous pouvez utiliser GetPosition sur MouseEventArgs avec un UIElement paramètre pour les coordonnées relatives ...

public void Handle_MouseMove(object e, MouseEventArgs f) 
{ 
    var point = f.GetPosition(MyElement); 
} 
0

vous devez attraper l'événement de clic de souris et il y a des gestionnaires d'événements que vous pouvez utiliser pour capturer la position.

private void CadLayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
       double point1 = e.GetPosition(bitmapCadView.UIElement).X; 
       double point2 = e.GetPosition(bitmapCadView.UIElement).Y; 
    } 
Questions connexes