我有一个ViewModelBase类,我为INotifyPropertyChanged接口定义了RaisePropertyChanged方法。大多数MVVM人都非常熟悉这一点。
我还有一个继承自ViewModelBase的Validating ViewModel。它实现了一个接口和一些方法来验证它的属性。它有一个IsValid属性,它只是一个检查是否存在任何规则违规的getter。但是,如果我不想在视图中绑定到此属性,则必须在某个时间更新。这基本上是每次更改某些其他属性,或者至少是我验证的属性。一个简单的解决方案是在RaisePropertyChanged方法中仅通知IsValid,但它在ViewModelBase中定义,其中尚未定义IsValid。
你们中的任何一个人都能解决这个困境吗?
答案 0 :(得分:3)
如果您遵循标准事件处理模式,则RaisePropertyChanged
方法将被标记为virtual
(它应该是protected virtual
方法),因此您将能够在验证视图模型中覆盖该方法,调用基础实现,然后为PropertyChanged
属性调用IsValid
事件。
我不太确定你在做什么,但如果是一般性验证,你最好使用像DataAnnotations这样的框架。