WPF中实现类似IE7中的自动隐藏菜单

程序要求实现类似IE7中可以自动隐藏的菜单。
在IE7中的菜单,点击ALT键时出现,再次点击隐藏。
刚开始时考虑在程序中截获ALT键消息,然后控制菜单的Visibility属性。可是这样做以后总是和IE实现的效果不同,同时发现和按下ALT键时是UP还是Down有关系。测试组发现了很多的BUG,开发不断的打补丁来弥补,确总是达不到理想效果。
最后经过研究发现一种简单的方法。
添加Menu的GotKeyboardFocus,LostKeyboardFocus,ContextMenuOpening事件,如下代码
<Menu x:Name="MainMenu" Height="23" Grid.Row="0"  Background="White" GotKeyboardFocus ="OnGotFocus" LostKeyboardFocus="OnLostFocus" ContextMenuOpening="OnContextMenuOpening">

...............

</Menu>

然后在GotKeyboardFocus中让菜单出现,注意这里不能使用Visibility。
        private void OnGotFocus(object sender, RoutedEventArgs e)
        {
            MainMenu.Height = 23;
            //MainGrid.RowDefinitions[0].Height = new GridLength(23);
            //MainMenu.Visibility = Visibility.Visible;
        }
在LostKeyboardFocus中让菜单隐藏。
        private void OnLostFocus(object sender, RoutedEventArgs e)
        {
            MainMenu.Height = 0;
            //MainGrid.RowDefinitions[0].Height = new GridLength(0);
            //MainMenu.Visibility = Visibility.Collapsed;
        }
在OnContextMenuOpening中让菜单出现(当菜单打开时,无论什么原因都要让菜单出现)
        private void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            MainMenu.Height = 23;
            //MainGrid.RowDefinitions[0].Height = new GridLength(23);
            //MainMenu.Visibility = Visibility.Visible;
        }

这样就好了,效果与IE7基本相同,能够让人满意。

转载于:https://www.cnblogs.com/dougua/archive/2007/07/03/804281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值