WPF:按 ALT 键时,按钮上的热键不显示下划线

Posted

技术标签:

【中文标题】WPF:按 ALT 键时,按钮上的热键不显示下划线【英文标题】:WPF: Hotkey on Button does not appear underlined when pressing ALT-Key 【发布时间】:2016-04-17 10:16:19 【问题描述】:

我有一个 WPF 应用程序,其中一个按钮是通过定义的

     <Button Command="Binding ShowSomeDialog">
        <AccessText>_Push me</AccessText>
     </Button>

按下 ALT 键时,该按钮不显示带下划线的“P”,但按下 ALT-P 会调用该命令。

在另一个窗口的同一个应用程序中,完全相同的标签的行为与预期的一样,这意味着:当按下 ALT 键时,它会在 P 下划线。

在热键没有下划线的上下文中,按钮嵌套很深。简化的层次结构可以概括为

    Window syncfusion:TabControlExt syncfusion:TabItemExt UserControl syncfusion:TabControlExt syncfusion:TabItemExt UserControl Button

如果在 '4. UserControl' 和 在添加到 '7 时不会被下划线。 UserControl' 或更深。

我找不到任何中间元素的自定义样式,尤其是没有将RecognizesAccessKey 设置为False 的样式。

有人知道要检查什么或在哪里检查吗?

【问题讨论】:

这个按钮是否在任何其他容器内? 是的。它实际上深深嵌套在包含选项卡的 den MDI 容器中,每个选项卡都包含一个包含按钮的用户控件。你的意思是这可能是一些“焦点”相关的问题? 容器有一个RecognizesAccessKey 属性,它会禁用访问密钥功能,请检查您的层次结构并确保它已启用。 感谢您的指导。我仍然无法解决这个问题。每个使用的 ContentPresenter 都将 RecognizesAccessKey 设置为 True。不过,我用其他信息详细说明了这个问题。也许这有帮助。 【参考方案1】:

检查您是否在某处重新设计了 Button - 访问键的行为很容易被错误的样式破坏。

顺便说一句,您确实尝试过直接将 Content 属性设置为“_Push me”,而不使用 AccessText,不是吗?

附: MSDN 在这里可能会有所帮助。

【讨论】:

重新设计的按钮也是我的第一个想法。我虽然会暂时删除所有自定义样式,但它仍然不起作用。我想我会再次深入研究。对于直接设置 Content 属性:是的,我试过了,没有运气。 我记得一些使用非标准选项卡控件 (telerik) 的焦点相关问题。您可以尝试在标签页中添加一个文本块和一个按钮,使前者成为焦点,然后按 ALT 吗?我认为 FocusManager 中有一些东西。【参考方案2】:

使用&lt;AccessText ... Margin="0,0,0,X"/&gt;,其中 X 是一个双精度值,并查看是否出现下划线。

【讨论】:

抱歉,这没有帮助。不过,我明白你的想法。谢谢你。

以上是关于WPF:按 ALT 键时,按钮上的热键不显示下划线的主要内容,如果未能解决你的问题,请参考以下文章

如何为 WPF 中的工具栏按钮创建热键?

按钮中的 WPF AccessText 仅适用于 Alt

始终显示热键

WPF 窗体快捷键(热键)

WPF 窗体快捷键(热键)

WPF 快捷键(窗体)