【问题标题】:Show underscore symbol when Alt pressed with KeyBinding specified在指定 KeyBinding 的情况下按下 Alt 时显示下划线符号
【发布时间】:2011-06-27 22:58:12
【问题描述】:

我在窗口内有 CommandBinding 和 KeyBindings。按下 Alt 修饰符激活命令。是否可以使用此绑定显示下划线符号?

ps 我不想在文本中使用下划线符号,请看这里为什么WPF hot key firing without modifier

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您可以简单地将项目的内容以下划线开头;按下 Alt 时,下划线将变为可见。

    <Button Height="100" Width="200" Content="_MyButton"/>
    

    如果关注的是在未按下 Alt 键修饰符时触发Command;您可以按照Atanas 的说明修改此行为。

            public Window1()
            {
                InitializeComponent();
    
                EventManager.RegisterClassHandler(typeof(UIElement), AccessKeyManager.AccessKeyPressedEvent, new AccessKeyPressedEventHandler(OnAccessKeyPressed));
            }
    
            private static void OnAccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
            {
                if (!e.Handled && e.Scope == null && (e.Target == null))
                {
                    //if alt key is not in use handle event to prevent behavior without alt key
                    if ((Keyboard.Modifiers & ModifierKeys.Alt) != ModifierKeys.Alt)
                    {
                        e.Target = null;
                        e.Handled = true;
                    }
                }
            }
    

    这将防止Command 在未按下修改键时触发Alt。

    【讨论】:

    • 仔细阅读我的帖子——尤其是“ps”部分。
    • @Lonli-Lokli 我很困惑;您希望下划线出现在哪里以及何时出现?
    • Win 控件有一个常见的行为——当用户按下 Alt 时,会出现下划线——例如,当我们有 content="MyButton" 时。不幸的是,Windows 可能(基于当前用户的机器设置)在没有 Alt 修饰符的情况下触发单击按钮事件。所以我把我的控件移到了 KeyBinding 中,但是现在我们应该在按下 Alt 时手动显示“”符号。
    • @Lonli-Lokli 添加了附加评论;应该会把你带到你需要去的地方。
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2014-07-09
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多