有时候我们可能不喜欢通过引发异常来指示用户输入错误。这可能是因为一下几个原因:异常不是由用户输入错误造成的,而可能是由于多个值之间的交互造成的,并且有时为了进行进一步处理,保存不正确的数值是值得的,而不是完全拒绝它们。
下面是 Product 类的修订版,该版本实现了 IDataErrorInfo 接口。
namespace ValidationRuleDemo{
public class Product : INotifyPropertyChanged, IDataErrorInfo{
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName){
if (PropertyChanged != null){
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private decimal unitCost;
public decimal UnitCost{
get { return unitCost; }
set{
unitCost = value;
this.RaisePropertyChanged("UnitCost");
}
}
// WPF不使用该属性
public string Error{
get { throw new NotImplementedException(); }