.net – How to disable keyboard and mouse events in a part of the visual tree without using IsEnabled

.netisenabledwpf

I've the requirement to build pseudo-modal dialogs in WPF. That is, for some specific (technical) reasons the software is not allowed to spawn modal dialogs. Instead, the user should interact with "embedded" modal dialogs when necessary.

I found a solution that works pretty well with MVVM and takes care of the Dispatcher and the synchronous character of modal dialogs. However, I am facing a problem with disabling the user input in the background GUI. Setting all controls to IsEnabled = false is unfortunately not acceptable since it changes the visual state of the background controls (shades of grey ->bad readability).

Is there a straight forward way to disable the user input (including focus and keyboard) in the background without changing the visual state?

Thanks for your help!

Best Solution

You can set the .IsHitTestVisible property to disable any mouseclicks to that control/window. This works the same as settings .IsEnabled, but without the visual state change (grey controls).