我希望我的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}} />
原文地址:https://www.jb51.cc/html/232283.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。