我有一个WPF应用程序,我正在按键更新输出。 我的代码运行正常。因为我正在使用KeyUp事件,所以只有一点点落后。 当我尝试使用KeyDown时,它始终是一个角色。我已经尝试添加UpdateSourceTrigger,如下面的TextBox XAML中所示
<TextBox
Text="{Binding TheLine, UpdateSourceTrigger=PropertyChanged}"
Behaviors:WatermarkTextBoxBehavior.EnableWatermark="True"
Behaviors:WatermarkTextBoxBehavior.Label="Please enter a numeric value"
Behaviors:WatermarkTextBoxBehavior.LabelStyle="{StaticResource watermarkLabelStyle}"
Grid.Column="0" x:Name="txtLengthFrom" GotFocus="txtLengthFrom_GotFocus" FontSize="15" FontWeight="SemiBold"></TextBox>
所有字符在KeyUp事件中都可以按预期使用。我该怎么做才能确保KeyDown事件中的所有字符都可用?
背后的代码看起来像这样
public MainWindow()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
}
void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
UpdateOutput();
}
答案 0 :(得分:0)
Keydown事件在密钥对您的属性生效之前发生。不确定为什么要这样做,但如果你必须将它们全部放在keydown中,你需要检查KeyEventArgs是否按下了哪个键。如果您最终根据KeyEventArgs中的内容修改属性,则需要设置e.Handled = true以防止它发生两次(因为如果不这样做,将在稍后处理)。
答案 1 :(得分:0)
基于@ Jon的评论,我将我的代码更改为使用TextBox.TextChanged事件,它可以按我的意愿运行。所以现在当我按下一个键时,输出会随着字符添加到文本框而改变。我拥有它的方式,当我按下一个键时它不会更新输出。我只是不喜欢它所以试图解决这个问题。