我有一个名为“CustomerDataContract”的类,它具有三个属性:MobilePhone、OfficePhone 和 PrivatePhone。为了与客户取得联系,至少必须设置其中一项属性。
我创建了一个验证器类,并添加了一个名为“CheckForAnyPhoneNumber”的自定义规则,以检查是否至少提供了一个电话号码。这几乎解决了我的问题。我遇到的唯一问题是,如果我清除手机属性,它就会被评估并处于错误状态。如果我现在输入 OfficePhone 号码,则 MobilePhone 属性不会重新计算并保持错误模式。
知道如何正确解决这个问题吗?我也尝试创建规则集但没有成功。
这是(部分)CustomerDataContract:
public partial class CustomerDataContract
{
public CustomerDataContract Clone()
{
return (CustomerDataContract) MemberwiseClone();
}
public override ValidationResult SelfValidate()
{
return ValidationHelper.Validate<CustomerDataContractValidator, CustomerDataContract>(this);
}
}
Run Code Online (Sandbox Code Playgroud)
所有 DataContract 的基类:
[Serializable]
public abstract class BDataModel : IDataErrorInfo, INotifyPropertyChanged
{
[field: NonSerialized]
private ValidationResult _currentState = new ValidationResult();
public ValidationResult CurrentValidationState
{
get { return _currentState; }
set
{
_currentState = value;
OnPropertyChanged("CurrentValidationState");
OnPropertyChanged("IsValid");
OnPropertyChanged("Error");
}
}
#region INotifyPropertyChanged
[field: NonSerialized]
public event PropertyChangedEventHandler PropertyChanged; …Run Code Online (Sandbox Code Playgroud)