在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属性的键,但这通常不是问题。