ReactiveUI.Validations 和嵌套验证

问题描述 投票:0回答:2

我想知道 ReactiveUI.Validation 是否支持嵌套验证。例如。父 ViewModel 仅当其子 ViewModel 有效时才有效。

类似这样的:

public class ParentViewModel : ReactiveValidationObject
{
    public Parent()
    {
         var child1 = new ChildViewModel();
         var child2 = new ChildViewModel();

         this.ValidationRule(child1);
         this.ValidationRule(child2);
    }
}
c# reactiveui
2个回答
0
投票

您可以使用

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");
    }
}

0
投票

另一种选择,例如,如果您不将

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.