【发布时间】:2019-05-06 05:33:08
【问题描述】:
我有一个Window,上面有一个Menu。当Menu 打开时,我想将Window 的外观更改为禁用。简单地用灰色Rectangle 覆盖它看起来不错。这是Window 标记:
<Grid>
<!--Content-->
<ContentControl Content="{Binding CurrentViewModel}" />
<!--Container to hide content-->
<Rectangle x:Name="Disabler" Fill="#77000000" Visibility="{Binding DisableWindow, Converter={StaticResource BoolToVisibilityConverter}}" />
</Grid>
我尝试在子菜单打开时将DisableWindow 设置为 true,在它关闭时设置为 false。但是,设置此值似乎会关闭子菜单。如何确保子菜单保持打开状态?
private void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
MainWindowViewModel mainVM = Window.GetWindow(this).DataContext as MainWindowViewModel;
if (mainVM != null)
{
mainVM.DisableWindow = true;
}
}
编辑:由于Rectangle 设置为可见,MouseUp 事件正在 Disabler 上发生。这就是子菜单对我关闭的原因。我尝试在Rectangle 上设置 IsHitTestVisible="False",但这使得它下面的所有内容都可以点击。有没有办法防止Rectangle 窃取焦点?
【问题讨论】:
标签: wpf window focus menuitem submenu