首页 > 解决方案 > 如何使文本框一起监听 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"/>

该按钮起作用,它触发事件并发送命令。但是文本框完全忽略了事件,只是将命令发送到视图模型。

有没有办法同时触发事件和命令?

标签: c#wpfeventstextboxcommand

解决方案


代替KeyDown事件使用PreviewKeyDown

更新

KeyDown对于通常由 WPF 处理的导航键,不会引发该事件,但该PreviewKeyDown事件也支持这些键。

也许有帮助:什么是 WPF 预览事件?


推荐阅读