在WPF中创建一个“热键”以聚焦文本框

13

我想制作一个热键(例如 Ctrl + Y),使其可以将焦点转移到文本框。

我是从Delphi迁移过来的,这让我很困惑。在Delphi 5中,这非常容易实现。(在标签的标题前面添加一个&符号,然后指向文本框即可完成制作热键。)

对于WPF,我看到了一些可怕的示例,需要调用Win32调用或为每个热键制作命令(以及其他类似的复杂实现)。

我很难相信,一个在1999年(Delphi 5)发布的IDE和语言版本,居然拥有比WPF更简单的热键系统。

肯定是我漏掉了什么重要的东西。如果您知道,请告诉我是什么。


也许这个线程对你有帮助:https://dev59.com/b3M_5IYBdhLWcg3wfTE0 - Habib
@Habib.OSU - 看起来你可以使用下划线代替和符号。但是如何将标签连接到文本框?(我尝试在我的标签中放置下划线,但它只打印了下划线)。问题的其余部分似乎讨论使用命令进行热键。如果可能的话,我想避免这样做(我将有很多控件,并且用命令将它们全部连接起来似乎过于复杂)。 - Vaccano
@Habib.OSU - 我找到了我想要的答案。如果你感兴趣,你可以在下面看到它的发布。 - Vaccano
1个回答

25

所以我应该更努力地寻找。在提出这个问题后不久,我就解决了它。

您需要创建一个标签并设置其内容(类似于这样的 Content="_服务年限")。

然后将标签的目标绑定到文本框(Target="{Binding ElementName=SomeTextBox}")。

现在,如果按下 Alt + Y,它将把焦点移动到 SomeTextBox。

以下是完整的绑定:

<Label Content="_Label" Target="{Binding ElementName=SomeTextBox}" />
<TextBox Name="SomeTextBox" />

9
如果您从代码中分配字符串,使用SomeLabel.Content = "_Label";,那么下划线将按原样显示。正确的代码应该类似于SomeLabel.Content = new AccessText { Text = "_Label" }; - Roman Starkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接