在我的画布中,我有一个图像对象 . 我没有在其中设置源,但它有坐标和大小 . 标签是:
<Image Canvas.Top =“50”Canvas.Left =“20”Height =“68”Width =“110”HorizontalAlignment =“Left”Name =“image1”Stretch =“Fill”VerticalAlignment =“Top”/>
问题在于:当我将鼠标移到它上面时,我想找到它 . 使用此代码:
VisualTreeHelper.FindElementsInHostCoordinates(point,Application.Current.RootVisual)
除非设置了源,否则它将找不到图像 . 如果未设置源,则不返回图像 . 有谁知道为什么?这给我带来了麻烦 . 我有一些拖放代码,我想在那个Image控件上放一些东西,但我需要知道什么时候鼠标在它上面 .
我知道还有其他方法可以做到这一点(例如在该位置放置其他东西,比如网格或其他东西并检测到它),但这不会起作用 . 我可以想到几种可行的方法,但它们的优雅程度要低得多 .
如果我能得到上面的回报我的形象,那肯定是理想的 .
2 回答
在您的代码中,您有
Point point = e.GetPosition(_canvas);
这将获得与画布相关的MousePosition坐标,但您的第二行VisualHelper.FindElementsInHostCoordinates(point,Application.Current.RootVisual)
正在搜索与整个页面相关的内容 . 您需要更改其中一个,以便它们与同一个控件相关 . 我会改成VisualHelper.FindElementsInHostCoordinates(point,_canvas)
您可以在Image对象周围添加
<Border>
对象 .或者,您可以为mouseenter和mouse leave添加eventhandler并更改Cursor .