我是silverlight的新手,並試圖閱讀Silverlight教程,該教程使用HitTest方法來了解鼠標何時位於控件上。 但不幸的是我不能看到這個名字的任何方法。HitTest財產
HitTest方法在哪裏?那是因爲我使用silverlight 4嗎?有沒有更換方法?
我是silverlight的新手,並試圖閱讀Silverlight教程,該教程使用HitTest方法來了解鼠標何時位於控件上。 但不幸的是我不能看到這個名字的任何方法。HitTest財產
HitTest方法在哪裏?那是因爲我使用silverlight 4嗎?有沒有更換方法?
舊版本(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);
我認爲你正在尋找MouseEnter和MouseLeave事件。
http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx
您可以訂閱這些事件,並設置表明該鼠標在你的單元的標誌,或者其他任何應用程序的需要。
我正在構建一個演示應用程序,您可以在表單中除了circle控件(存在於表單中)之外的任何位置拖放控件。在教程中,他們使用circule.HitTest(e.GetPosition(null))其中e是「MouseEventArgs」。這個方法發生了什麼(hitTest)爲什麼我不能使用它? – Gaby 2010-05-27 12:33:56
您試圖遵循什麼教程? – AnthonyWJones 2010-05-27 12:35:23