WPF中与WinForms TextBox.Validating事件相当的是什么?

9

在WinForms中,我可以处理Validated事件,在用户更改TextBox中的文本后执行某些操作。与TextChanged不同,Validated不会在每个字符更改时触发;它只会在用户完成后触发。

在WPF中有没有任何东西可以使用,以获得相同的结果,即仅在用户完成文本更改后引发事件?

4个回答

5
似乎没有本地解决方案。 LostFocus事件是个好主意。但是当用户点击Enter时,他希望TextBox验证更改。 因此,这是我的建议:在失去焦点事件和按下Enter键的KeyDown事件中使用。
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    // code to lauch after validation
}

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        // call the LostFocus event to validate the TextBox
        ((TextBox)sender).RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent));
    }
}

请注意,在失去焦点事件之前,点击按钮等操作已经被执行。请使用LostKeyboardFocus代替。 - Felix Keil

5

当用户从您的文本框移动到任何其他控件时,LostFocus 事件将触发。


2

失去焦点并不等同于验证。当您在一个屏幕上有多个文本框,并且每个文本框都有一些在验证中编写的逻辑时,它会产生很多问题。在验证事件中,您可以轻松控制焦点,但在失去焦点时却不太容易。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接