我有一个带文本框的WPF窗口。我想检测用户何时按下Enter键或Tab键。当按下这些键中的任何一个时,我想绑定到视图模型中的一个动作。有人能告诉我这是怎么做到的吗?
答案 0 :(得分:5)
处理KeyDown
事件。
<TextBox KeyDown="TextBox_KeyDown"/>
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Enter:
vw.Method1();
break;
case Key.Tab:
vw.Method2();
break;
default:
}
}
或使用命令:
public static class Commands
{
public static RoutedCommand Command1 = new RoutedCommand();
public static RoutedCommand Command2 = new RoutedCommand();
}
<TextBox>
<TextBox.CommandBindings>
<CommandBinding Command="{x:Static local:Commands.Command1}"
Executed="Command1_Executed" CanExecute="Command1_CanExecute"/>
<CommandBinding Command="{x:Static local:Commands.Command2}"
Executed="Command2_Executed" CanExecute="Command2_CanExecute"/>
</TextBox.CommandBindings>
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{x:Static local:Commands.Command1}"/>
<KeyBinding Key="Tab" Command="{x:Static local:Commands.Command2}"/>
</TextBox.InputBindings>
</TextBox>
如果您之前没有使用过命令,请务必阅读this overview。