HitTest属性

时间:2010-05-27 12:19:40

标签: c# silverlight silverlight-4.0

我是Silverlight的新手,并尝试阅读一个使用HitTest方法知道鼠标何时在控件上的Silverlight教程。 但不幸的是,我无法看到任何具有此名称的方法。

HitTest方法在哪里?那是因为我使用的是Silverlight 4吗?有替代方法吗?

2 个答案:

答案 0 :(得分:3)

旧版本(3.0之前版本)确实有HitTest方法。在Silverlight 3和4中你将使用它 VisualTreeHelper.FindElementsInHostCoordinates实现类似目标的方法。

例如,可以在可能拖动项目的曲面上的鼠标事件中使用以下代码。它将确定拖动项目的任何部分是否与目标项目重叠。 警告航空代码

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);

答案 1 :(得分:0)

我认为您正在寻找MouseEnter和MouseLeave事件。

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

您可以订阅这些事件并设置一个标志,指示鼠标在您的元素上,或者执行您的应用程序所需的任何其他事件。