2010-05-27 42 views
2

我是silverlight的新手,并试图阅读Silverlight教程,该教程使用HitTest方法来了解鼠标何时位于控件上。 但不幸的是我不能看到这个名字的任何方法。HitTest财产

HitTest方法在哪里?那是因为我使用silverlight 4吗?有没有更换方法?

+0

您试图遵循什么教程? – AnthonyWJones 2010-05-27 12:35:23

回答

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

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

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

您可以订阅这些事件,并设置表明该鼠标在你的单元的标志,或者其他任何应用程序的需要。

+0

我正在构建一个演示应用程序,您可以在表单中除了circle控件(存在于表单中)之外的任何位置拖放控件。在教程中,他们使用circule.HitTest(e.GetPosition(null))其中e是“MouseEventArgs”。这个方法发生了什么(hitTest)为什么我不能使用它? – Gaby 2010-05-27 12:33:56