在WinForms中,我可以处理Validated事件,在用户更改TextBox中的文本后执行某些操作。与TextChanged不同,Validated不会在每个字符更改时触发;它只会在用户完成后触发。
在WPF中有没有任何东西可以使用,以获得相同的结果,即仅在用户完成文本更改后引发事件?
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));
}
}
失去焦点并不等同于验证。当您在一个屏幕上有多个文本框,并且每个文本框都有一些在验证中编写的逻辑时,它会产生很多问题。在验证事件中,您可以轻松控制焦点,但在失去焦点时却不太容易。
您也可以尝试使用Binding.ValidationRules
文档链接:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx
以下是入门文章:
如何实现绑定验证: