如何在WPF中使用Alt键切换主菜单可见性?

我希望我的WPF应用程序中的主菜单的行为类似于IE8中的主菜单

>当应用程序启动时,它不可见
>按下并释放Alt使其可见
>再次按下并释放Alt会使其再次隐身
>重复直到无聊

我怎样才能做到这一点?它必须是代码吗?

添加回复提交的答案,因为我仍然遇到麻烦:

我的Shell代码隐藏现在看起来像这样:

public partial class Shell : Window
{
    public static readonly DependencyProperty IsMainMenuVisibleProperty;

    static Shell()
    {
        FrameworkPropertyMetadata Metadata = new FrameworkPropertyMetadata();
        Metadata.DefaultValue = false;

        IsMainMenuVisibleProperty = DependencyProperty.Register(
            "IsMainMenuVisible",typeof(bool),typeof(Shell),Metadata);
    }

    public Shell()
    {
        InitializeComponent();

        this.PreviewKeyUp += new KeyEventHandler(Shell_PreviewKeyUp);
    }

    void Shell_PreviewKeyUp(object sender,KeyEventArgs e)
    {
        if (e.SystemKey == Key.LeftAlt || e.SystemKey == Key.RightAlt)
        {
            if (IsMainMenuVisible == true)
                IsMainMenuVisible = false;
            else
                IsMainMenuVisible = true;
        }
    }

    public bool IsMainMenuVisible
    {
        get { return (bool)GetValue(IsMainMenuVisibleProperty); }
        set { SetValue(IsMainMenuVisibleProperty,value); }
    }
}

解决方法

您可以在窗口上使用PreviewKeyDown事件.要检测Alt键,您需要检查KeyEventArgs的SystemKey属性,而不是通常用于大多数其他键的Key属性.

您可以使用此事件设置bool值,该值已在后面的Windows代码中声明为DependencyProperty.

然后可以使用BooleanToVisibilityConverter将菜单的Visibility属性绑定到此属性.

<Menu 
    Visibility={Binding Path=IsMenuVisibile,RelativeSource={RelativeSource AncestorType=Window},Converter={StaticResource BooleanToVisibilityConverter}}
    />

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些