views:

61

answers:

0

What I really want is a version of IsHitTestVisible that ignores mouse click events but still traps mouse enter and leave events.

Background: An informational overlay pops up under the control with focus whenever. This is a requirement, so I'm not at liberty to remove this behavior. This is implemented using an adorner containing a Rectangle shape, filled with an image brush. All controls are created programatically, no XAML involved.

Desired behavior: When user mouses over the Rectangle, it should become partially transparent. This is so that they can see the other controls beneath the overlay and click them. When the user clicks on the overlay, the click should be passed through to whatever control is under the overlay, right where the user clicked.

Problem: If I set IsHitTestVisible to True to allow mouse clicks to pass through, I don't get MouseEnter events.

Is there a simple way to leave IsHitTestVisible True, and then pass all but 2-3 events to the correct control beneath the adorner? I'm looking for a solution that does not involve calculating what control is beneath the cursor, since WPF is clearly capable of doing this for me.

Alternatively, could I set IsHitTestVisible to False but then use another simple method to determine when the mouse is over the adorner?

UPDATE: I'm still hoping for an answer, but as of now the most promising solution seems to be leaving IsHitTestVisible true, and using the WPF hit testing APIs to figure out what type of control was underneath the mouse cursor; if it was one I know about, I'd send a Click command to it. Not sure if this is worth doing, though; as of now clicking dismisses my overlay so the user just has to click twice.

Thanks!