制作“热键”以聚焦 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 中的文本框的主要内容,如果未能解决你的问题,请参考以下文章

获取一个文本框以填充 WPF 中的网格单元格

始终显示 WPF 文本框工具提示

WPF 文本框 RaiseEvent

winform文本框超出

如何在 WPF 中的 tabItem 中集中控制

C#中的数字文本框[重复]