具有数据注释的 ReactiveValidatedObject 强制重新验证属性

本文关键字:新验证 验证 属性 数据 注释 ReactiveValidatedObject | 更新日期: 2023-09-27 18:32:10

仅当另一个属性设置为 true 时,我才尝试验证属性。我正在使用从另一个网页获取的RequiredIfAttribute。

[RequiredIf("PropertyA",true)]
public string PropertyB
{
    get  
    {
        return _PropertyB;
    }
    set  
    {
        this.RaiseAndSetifChanged(x => x.PropertyB, value);
    }
}

RequiredIf 属性正在检查属性 A 是否设置为 true,然后进行验证,否则它将跳过验证并返回成功。它的工作方式就像一个魅力,但问题是它仅在更改属性 B 时才有效,但它不知道在更改属性 A 时需要刷新。所以我试图在 PropertyA 像这样更改时强制更新:

this.ObservableForProperty(x => x.PropertyA).Subscribe(obj =>
{
  this.RaisePropertyChanged(x=>x.PropertyB);
})

但它不起作用 - 什么也没发生。我认为它被忽略了,因为值没有改变。

还有另一种有效的方法,但与其说是解决方案,不如说是一种解决方法:

this.ObservableForProperty(x=>x.PropertyA).Subscribe(obj =>
{
 var temp = PropertyB;
 PropertyB = "anything"; //it forces revalidation
 PropertyB = temp; // it forces revalidation
})

具有数据注释的 ReactiveValidatedObject 强制重新验证属性

我希望在这种情况下,将属性A与属性B绑定对您有所帮助。