2010-06-25 4 views
0

Dans ma toile, j'ai un objet image. Je n'ai pas défini de source, mais elle a des coordonnées et une taille. Le tag est:SilverLight: Vous ne trouvez pas l'image sur la toile

< Image Canvas.Top = "50" Canvas.Left = "20" Hauteur = "68" Largeur = "110" HorizontalAlignment = "Left" Nom = "image1" Stretch = "Remplir" VerticalAlignment = « Top »/>

Voici le problème: Quand je déplace la souris dessus, je veux trouver. Avec ce code:

VisualTreeHelper.FindElementsInHostCoordinates (point, Application.Current.RootVisual)

Il ne trouvera pas l'image sauf si une source est définie. Si aucune source n'est définie, l'image n'est pas renvoyée. Quelqu'un sait-il pourquoi? Cela me cause des problèmes. J'ai un glisser/déposer du code et je cherche à laisser tomber quelque chose sur ce contrôle Image, mais j'ai besoin de savoir quand la souris est dessus.

Je sais qu'il ya d'autres moyens que je pourrais le faire (par exemple en plaçant quelque chose d'autre à cet endroit, comme une grille ou quelque chose et en détectant que), mais cela ne va pas au travail. Je peux penser à plusieurs façons qui fonctionneront, mais elles sont beaucoup moins élégantes.

Si je pouvais obtenir le plus haut pour revenir mon image, ce serait certainement idéal.

Répondre

1

Dans votre code, vous aviez Point point = e.GetPosition(_canvas); Cela obtient les coordonnées MousePosition par rapport à la toile, mais votre deuxième ligne VisualHelper.FindElementsInHostCoordinates(point,Application.Current.RootVisual) est à la recherche par rapport à la page. Vous devez changer l'un ou l'autre afin qu'ils soient en relation avec le même contrôle. Je voudrais simplement passer à VisualHelper.FindElementsInHostCoordinates(point,_canvas)

+0

J'étais tellement excitée parce que cela me semblait être une solution évidente. Mais hélas, ce n'était pas le cas. Le définir à vrai n'a eu aucun effet. Un examen plus approfondi a révélé qu'il était réglé sur vrai par défaut. Merci, cependant. – Pete

+0

D'où venez-vous? Est-ce à partir d'un MouseEvent sur l'image elle-même? L'autre chose à vérifier est de s'assurer que les coordonnées du point sont en relation avec 'Application.RootVisual' puisque c'est votre objet de référence. – Stephan

+0

Ceci est pour le glisser-déposer. Le code en question est: Point point = e.GetPosition (_canvas); foreach (élément UIElement dans VisualTreeHelper.FindElementsInHostCoordinates (point, Application.Current.RootVisual)) Tout à ce stade (y compris une grille que j'utilise pour donner un arrière-plan) s'affiche. Je vois l'image que je déplace, la grille, le canevas et le contrôle utilisateur à ce moment-là. J'ai essayé de supprimer la grille sur la possibilité que l'image n'apparaisse pas à cet endroit, mais tout cela a changé car la grille n'apparaissait plus dans la liste des éléments. – Pete

0

Vous pouvez ajouter un objet <Border> autour de l'objet Image.

Ou vous pouvez ajouter eventhandlers pour le mouseenter et le congé souris et changer le curseur.

Questions connexes