views:

259

answers:

1

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 ?

+1  A: 

You can use the VisualTreeHelper class for this function.

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