在WinForms中,我可以处理Validated事件,以在用户更改TextBox中的文本后执行某些操作。与TextChanged不同,Validated没有针对每个字符更改进行触发;它只会在用户完成时触发。WinForms中的等效项TextBox.Validating WPF中的事件
WPF中有什么我可以用来得到相同的结果,只有在用户完成后才提出的事件更改文本?
在WinForms中,我可以处理Validated事件,以在用户更改TextBox中的文本后执行某些操作。与TextChanged不同,Validated没有针对每个字符更改进行触发;它只会在用户完成时触发。WinForms中的等效项TextBox.Validating WPF中的事件
WPF中有什么我可以用来得到相同的结果,只有在用户完成后才提出的事件更改文本?
LostFocus将在用户从您的文本框移动到任何其他控件时触发。
您也可以尝试Binding.ValidationRules
的记载:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx
下面是文章开始:
如何实现绑定验证:
似乎没有本地解决方案。 LostFocus事件是一个好主意。但是当用户点击Enter时,他希望TextBox验证更改。 所以这里是我的建议:当密钥为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中的逻辑时,它会产生很多问题。在验证事件中,您可以轻松地控制焦点,但无法轻松控制焦点。