我想知道 ReactiveUI.Validation 是否支持嵌套验证。例如。父 ViewModel 仅当其子 ViewModel 有效时才有效。
类似这样的:
public class ParentViewModel : ReactiveValidationObject
{
public Parent()
{
var child1 = new ChildViewModel();
var child2 = new ChildViewModel();
this.ValidationRule(child1);
this.ValidationRule(child2);
}
}
IsValid()
扩展方法获取 IObservable<bool>
实例来获取内部模型的有效状态。在您的“主”模型中的 ValidationRule()
方法中使用它并使用 ValidationRule(IObservable<bool>, string)
重载。请参阅以下示例:
public class ParentViewModel : ReactiveValidationObject
{
public Parent()
{
var child1 = new ChildViewModel();
var child2 = new ChildViewModel();
this.ValidationRule(child1.IsValid(), "the first child model is invalid");
this.ValidationRule(child2.IsValid(), "the second child model is invalid");
}
}
另一种选择,例如,如果您不将
ChildViewModel
绑定到 UI,则将两个 ValidationContext
结合起来:
public class ParentViewModel : ReactiveValidationObject
{
public ParentViewModel()
{
var child1 = new ChildViewModel();
var child2 = new ChildViewModel();
ValidationContext.Add(child1.ValidationContext);
ValidationContext.Add(child2.ValidationContext);
}
}