clems
clems

Reputation: 31

How can I determine if the mouse cursor is over a given uielement?

I need to determine whether the mouse cursor is over a given UIElement. The method should work even if another element is placed on top of it (because it has a bigger Zindex).

I tried using MouseEnter/Leave events but mouseenter does not trigger if the element is not the top most element.

Any ideas?

Upvotes: 3

Views: 2891

Answers (1)

AnthonyWJones
AnthonyWJones

Reputation: 189457

You can use the VisualTreeHelper class for this function.

 void MouseMove(object sender, MouseEventArgs e)
 {
      Point p = e.GetPosition((UIElement)sender);
      var elems = VisualTreeHelper.FindElementsInHostCoordinates(p, (UIElement)sender)
      if (elems.Contains(theUIElementIamLookingFor))
      {
         //element is somewhere under the mouse
      }
 }

Upvotes: 9

Related Questions