在TextBox中捕获Enter键

在我的WPF视图中,我试图将事件绑定到Enter键上,如下所示:

<TextBox Width="240" VerticalAlignment="Center" Margin="2" Text="{Binding SearchCriteria, Mode=OneWayToSource}"> <TextBox.InputBindings> <KeyBinding Key="Enter" Command="{Binding EnterKeyCommand}"/> <KeyBinding Key="Tab" Command="{Binding TabKeyCommand}"/> </TextBox.InputBindings> </TextBox> 

这个代码工作,当用户按Enter键时,我的EnterKeyCommand被触发。 但问题是,当事件触发时,WPF尚未将文本框中的文本绑定到“SearchCriteria”。 所以当我的事件发生时,“SearchCriteria”的内容是空白的。 是否有一个简单的改变,我可以在这段代码,以便我可以得到的文本框的内容时,我的EnterKey命令触发?

您需要将您的TextBox.Text绑定到PropertyChanged更改UpdateSourceTrigger 。 看到这里 。

您可以通过将TextBox的InputBindings属性作为CommandParameter传递给Command来执行此操作:

 <TextBox x:Name="MyTextBox"> <TextBox.InputBindings> <KeyBinding Key="Return" Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=MyTextBox, Path=Text}"/> </TextBox.InputBindings> </TextBox> 

您也可以在后面的代码中执行此操作。

如何:按下input键时检测

在检查input/返回,只需调用你的事件处理程序代码。

我知道这是6岁,但没有答案使用XAML完全正确的答案,没有代码隐藏。我还有一些工作要做。 作为参考的方法是以下。 首先是XAML

  <TextBox Text="{Binding SearchText, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> <TextBox.InputBindings> <KeyBinding Key="Enter" Command="{Binding SearchEnterHit}"/> <KeyBinding Key="Return" Command="{Binding SearchEnterHit}"/> </TextBox.InputBindings> </TextBox> 

基本上这个方法是每个按键都被扔到绑定的SearchText上。 因此,一旦返回/input被按下,string将全部出现在SearchText中。 因此,在SearchEnterHit命令中,TextBox中的整个string可通过SearchText属性获得。

如上所述,UpdateSourceTrigger = PropertyChanged是每次击键到SearchText属性。 KeyBindings捕获input密钥。

这是没有代码隐藏和所有XAML的最简单的方法。 确定你经常冲洗SearchText属性的键,但这通常不是问题。