我有一个简单的 winforms 应用程序,其中包含一个表单、几个控件和一个如下定义的业务对象:
public class BusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private string _phoneNumber;
public string PhoneNumber
{
get { return _phoneNumber; }
set
{
if (_phoneNumber == value)
{
return;
}
_phoneNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("PhoneNumber"));
}
}
在我的表单上,我有一个文本框,它通过绑定源绑定到 PhoneNumber 属性,并且数据源更新模式设置为 OnPropertyChanged。这一切都按预期工作。在将文本分配给我的业务对象上的 PhoneNumber 属性之前,我需要对它进行一些验证。我认为我会在文本框的验证事件处理程序中执行此操作,如果输入无效,我会显示我的错误提供程序并设置 e.Cancel = true。不幸的是,这并不能阻止无效输入绑定到 PhoneNumber 属性。是否有捷径可寻?