2012-05-04 56 views
7

我想制作一个热键(即Ctrl + Y),它将焦点改变为文本框。制作一个“热键”,将焦点放在WPF文本框中

我是Delphi的移植,这让我很困惑。在德尔福5这是如此,所以容易。 (在标签的标题上,您可以在要制作热键的字母前添加一个&,然后将文本框中的标签指向该热键将起作用。)

对于WPF,我看到了可怕的示例在WPF中涉及到调用Win32调用或为每个热键(以及其他如此繁重的实现)发出命令。

我很难相信IDE和Languange版本在(Delphi 5)中有一个比Hotkeys简单的系统(比WPF)更好的系统。

当然,我失去了一些东西。如果你知道,请告诉我它是什么。

+0

可能是这个线程对你有帮助http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf – Habib

+0

@ Habib.OSU - 它看起来像你可以使用_而不是&。但是,如何将标签连接到TextBox? (我试着在我的标签中加上一个下划线,它只是打印了_)。 (问题的其余部分似乎讨论了使用热键的命令,如果可以的话,我想避免这种情况(我会有很多控制,并用命令将它们连接起来看起来像是过度杀毒)。) – Vaccano

+0

@ Habib.OSU - 我找到了我正在寻找的答案。如果你有兴趣,你可以在下面看到它。 – Vaccano

回答

13

所以,我应该一直看着更难。我在问这个问题后不久就知道了。

他们的方式这样做是您创建一个标签,并设置其内容(像这样Content="_Years Of Service"

你那么标签的目标绑定到一个文本框。 (Target="{Binding ElementName=SomeTextBox}"

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

以下是完整的结合:

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

+1 good one @Vaccano – Habib

+5

除了如果你从代码中分配字符串,使用'SomeLabel.Content =“_Label”;',下划线将按原样显示。正确的代码就像'SomeLabel.Content = new AccessText {Text =“_Label”};'' –