C# 与WinForms TextBox等效。正在验证WPF中的事件

C# 与WinForms TextBox等效。正在验证WPF中的事件,c#,.net,wpf,vb.net,winforms,C#,.net,Wpf,Vb.net,Winforms,在WinForms中,在用户更改文本框中的文本后,我可以处理已验证事件以执行某些操作。与TextChanged不同,Validated不会为每个字符更改触发;它仅在用户完成操作时才启动 WPF中是否有任何东西可以用于获得相同的结果,只有在用户完成文本更改后才会引发事件?当用户从文本框移动到任何其他控件时,将触发该事件。您也可以尝试Binding.ValidationRules 记录于: 以下是要开始的文章: 如何实现绑定验证: 似乎没有本机解决方案。 LostFocus事件是个好主意。但当用户单

在WinForms中,在用户更改文本框中的文本后,我可以处理已验证事件以执行某些操作。与TextChanged不同,Validated不会为每个字符更改触发;它仅在用户完成操作时才启动


WPF中是否有任何东西可以用于获得相同的结果,只有在用户完成文本更改后才会引发事件?

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

您也可以尝试Binding.ValidationRules

记录于:

以下是要开始的文章:

如何实现绑定验证:


似乎没有本机解决方案。 LostFocus事件是个好主意。但当用户单击Enter时,他希望文本框验证更改。 因此,我的建议是:在输入键时使用LostFocus事件和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));
    }
}

LostFocus不等同于Validate。当您在一个屏幕上有多个文本框,并且每个文本框都有一些用Validate编写的逻辑时,就会产生很多问题。在validate event中,您可以轻松控制焦点,但在LostFocus中却不那么容易

请注意,在失去焦点事件之前,点击按钮等会被执行。改用LostKeyboardFocus。