2010-05-27 77 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