如何在ReactiveUI.Validation中为非属性添加验证规则?
ReactiveUI.Validation 支持非属性Observable的验证规则吗?
可以的,ReactiveUI.Validation提供了重载的ValidationRule方法,支持直接基于内部未暴露的Observable添加验证规则,无需绑定到对外属性。
你只需要调整调用方式,传入验证触发的Observable、有效性判断逻辑和对应的错误信息即可,示例代码如下:
class MyViewModel : ReactiveValidationObject { public MyViewModel() { this.ValidationRule(x => x.Name, x => !string.IsNullOrEmpty(), "Name cannot be empty"); IObservable<bool> isDatabaseReady = database.IsReady; // 针对内部Observable添加验证规则 this.ValidationRule( validationTrigger: isDatabaseReady, isValid: ready => ready, message: "Database is not ready" ); } }
关键说明:
- 该重载方法不需要指定属性表达式,直接以内部Observable作为验证触发源;
isValid委托定义验证通过的条件:当isDatabaseReady发出true时验证通过,发出false时触发错误;- 这条规则会被纳入ViewModel的整体有效性判断,你可以通过
IsValid属性或ValidationStatusObservable监听整体验证状态; - 完全适配仅在ViewModel层使用、不涉及视图绑定的场景。
内容的提问来源于stack exchange,提问作者SuperJMN
相关产品推荐
相关产品推荐

