带有DataAnnotation的ReactiveValidatedObject强制重新验证属性

时间:2016-01-27 11:54:59

标签: c# .net wpf reactiveui

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

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

RequiredIf属性检查PropertyA是否设置为true然后验证否则它跳过验证并返回Success。它的工作就像一个魅力,但问题是它只有在PropertyB被改变时才有效,但是当PropertyA被改变时它不知道它需要刷新。因此,我试图在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
})

1 个答案:

答案 0 :(得分:1)

我希望在这种情况下,绑定PropertyA和PropertyB会帮助你。