I’m creating a WPF application containing a “Main-Content” – Layer containing a TabControl and a “Dialog” – Layer containing an ItemsControl.
The XAML looks like this:
<Grid>
<TabControl>
..Some Tabs
</TabControl>
<ItemsControl>
<ContentControl Content={Binding Dialog1Property} />
<ContentControl Content={Binding Dialog2Property} />
</ItemsControl>
</Grid>
Usually “Dialog1Property” and “Dialog2Property” are null which means the ItemsControl is invisible. Whenever I assign a Control to one of them, it is shown in front of the TabControl which is exactly what I want. If I assign a gray Rectangle with an opacity of 0.7 to one of the Dialog – Properties it creates a Gray overlay.
If I click on the Tab, which is slightly visible through the overlay, nothing happens – the Rectangle blocks Mouse Events. It is, however, still possible to focus the TabControl behind the overlay using the Tab-Key and therefore it is also possible to switch tabs even though a Dialog is shown.
Is there an easy way to tell the rectangle to somehow block key events as it allready does with Mouseclicks?
Regards
BBRain
Yes, on your Rectangle, subscribe to the event PreviewKeyDown.
In its handler, simply set e.Handled = true;
Since routed events prefixed with “Preview…” are tunneling, the elements under your rectangle won’t recieve the input.