2010-05-27 5 views
2

Je suis nouveau sur silverlight et j'essaie de lire un didacticiel Silverlight qui utilise la méthode HitTest pour savoir quand la souris survole un contrôle. Mais malheureusement, je ne vois pas de méthode avec ce nom.Propriété HitTest

Où est la méthode HitTest? est-ce parce que j'utilise silverlight 4? Y a-t-il une méthode de remplacement?

+0

Quel didacticiel essayez-vous de suivre? – AnthonyWJones

Répondre

3

Les anciennes versions (antérieures à la version 3.0) avaient une méthode HitTest. Dans Silverlight 3 et 4, vous utiliserez la méthode VisualTreeHelper.FindElementsInHostCoordinates pour atteindre un objectif similaire.

Par exemple, le code suivant pourrait être utilisé dans un événement de souris sur une surface sur laquelle vous pourriez faire glisser un élément. Il déterminera si une partie de l'élément déplacé chevauche l'élément cible. Code d'avertissement aérien

var container = (UIElement)sender; 
var transform = draggedItem.TransformToVisual(container); 

Rect rect = new Rect(transform.Transform(new Point(0, 0)), 
    new Size(draggedItem.ActualWidth, draggedItem.ActualHeight); 

bool hit = VisualTreeHelper.FindElementsInHostCoordinates(rect, container) 
    .Any(elem => elem == targetItem); 
0

Je pense que vous recherchez les événements MouseEnter et MouseLeave.

http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx

Vous pouvez vous abonner à ces événements et définir un indicateur qui indique que la souris est sur votre élément, ou faire tout ce à vos besoins d'application.

+0

Je construis une application de démonstration que vous pouvez faire glisser et déposer un contrôle où vous voulez dans le formulaire, sauf sur un contrôle circule (existent dans le formulaire) .Dans le tutoriel, ils utilisent circule.HitTest (e.GetPosition (null)) où e est le "MouseEventArgs" .Qu'est-il arrivé à cette méthode (hitTest) pourquoi je ne peux pas l'utiliser? – Gaby