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】:使用<AccessText ... Margin="0,0,0,X"/>
,其中 X 是一个双精度值,并查看是否出现下划线。
【讨论】:
抱歉,这没有帮助。不过,我明白你的想法。谢谢你。以上是关于WPF:按 ALT 键时,按钮上的热键不显示下划线的主要内容,如果未能解决你的问题,请参考以下文章