c# - 如何使文本框一起监听 Keypress-Event 和 InputBinding
问题描述
我在 WPF 的程序中创建了一个登录站点,您可以在其中输入您的凭据,然后按 Enter 或下面的按钮。该按钮有一个命令(用于视图模型绑定)和一个单击事件(如果在一秒钟内登录不成功,我在代码后面有一个 AutoResetEvent 会震动文本框)。
现在我对文本框进行了同样的尝试:命令和事件。所以这是我目前的文本框:
<TextBox Margin="0,0,0,10" Text="{Binding Username}" KeyDown="MainWindow_KeyDown">
<TextBox.InputBindings>
<KeyBinding
Key="Enter"
Command="{Binding KeyPressCommand}" />
</TextBox.InputBindings>
</TextBox>
这是我的按钮:
<Button Command="{Binding ConnectCommand}" Content="Connect" Background="#E9712F" Margin="0,10,0,0" FontFamily="Arial" FontWeight="Bold" Foreground="White" Cursor="Hand" Click="Button_Click"/>
该按钮起作用,它触发事件并发送命令。但是文本框完全忽略了事件,只是将命令发送到视图模型。
有没有办法同时触发事件和命令?
解决方案
代替KeyDown
事件使用PreviewKeyDown
更新
KeyDown
对于通常由 WPF 处理的导航键,不会引发该事件,但该PreviewKeyDown
事件也支持这些键。
也许有帮助:什么是 WPF 预览事件?
推荐阅读
- .net - 使用 .NET HttpWebRequest,如何添加带有单个数字的 Range 标头?
- javascript - 如何基于第三个数组从另一个数组创建一个新数组?
- docker - 从 Dockerfile 创建映像
- c# - 我无法发送电子邮件
- arrays - Handling two-digit numbers as a single element in arrays
- php - phpunit code coverage not working in a module of my project
- javascript - Deploy an application that uses a node.js server on Firebase
- sql - 如何使用正则表达式在 SQL 中提取字符串?
- aws-lambda - 错误 [a bytes-like object is required, not 'str' ] in importing CSV to DynamoDB using python
- java - NoSuchElementException 使用扫描仪