制作“热键”以聚焦 WPF 中的文本框
Posted
技术标签:
【中文标题】制作“热键”以聚焦 WPF 中的文本框【英文标题】:Make a "hotkey" to focus a TextBox in WPF 【发布时间】:2012-05-14 05:06:04 【问题描述】:我正在尝试制作一个热键(即 Ctrl + Y),它将焦点更改为文本框。
我是从 Delphi 移植过来的,这让我很困惑。在 Delphi 5 中,这非常、非常简单。 (在标签的标题上,您可以在要创建热键的字母之前添加一个 &。将标签指向 TextBox 后,热键将起作用。)
对于 WPF,我在 WPF 中看到了涉及调用 Win32 调用或为每个热键(以及其他此类繁重的实现)创建命令的可怕示例。
我很难相信 1999 年(Delphi 5)中的新 IDE 和语言版本具有更好的系统(比 WPF)对于像热键这样简单的东西。
我肯定错过了什么。如果你知道,请告诉我它是什么。
【问题讨论】:
这个帖子可能对你有帮助***.com/questions/1361350/keyboard-shortcuts-in-wpf @Habib.OSU - 看起来您可以使用 _ 而不是 &。但是如何将标签连接到文本框? (我尝试在标签中添加下划线,它只打印了 _)。 (问题的其余部分似乎在讨论使用命令作为热键。如果可以的话,我想避免这种情况(我将有很多控件,并且用命令将它们全部连接起来似乎有点过头了。) @Habib.OSU - 我找到了我正在寻找的答案。如果您有兴趣,可以在下面看到它。 【参考方案1】:所以,我应该继续努力寻找。我问了这个问题后不久就知道了。
他们这样做的方式是创建一个标签并设置其内容(类似于 Content="_Years Of Service"
)
然后您将标签的目标绑定到一个文本框。 (Target="Binding ElementName=SomeTextBox"
)
现在,如果您按 Alt + Y,它会将焦点移动到 SomeTextBox。
这是完整的绑定:
<Label Content="_Label" Target="Binding ElementName=SomeTextBox" />
<TextBox Name="SomeTextBox" />
【讨论】:
除非您从代码中分配字符串,使用SomeLabel.Content = "_Label";
,下划线将按原样显示。正确的代码类似于SomeLabel.Content = new AccessText Text = "_Label" ;
以上是关于制作“热键”以聚焦 WPF 中的文本框的主要内容,如果未能解决你的问题,请参考以下文章