我有一个MVVM模式的程序,我有一个包含一些对象的View,其中一个是Value TextBox,当在其中写入文本时会使用ValidatesOnDataErrors。
我还有一个绑定到它的IsEnabled属性,该属性在我做的某些条件下在ViewModel上发生了变化。
我希望能够在IsEnabled的绑定属性为False时消除ValidatesOnDataErrors(使其为False),我该怎么做?
<StackPanel>
.....
<TextBox Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}" IsEnabled="{Binding isValueFieldEnable}"/>
.....
</StackPanel>
谢谢。
答案 0 :(得分:1)
正如@Il Vic所建议的那样,验证逻辑应该在视图模型类中实现。
您不会在视图中更改绑定的ValidatesOnDataErrors
属性。相反,您应该确保视图模型始终处于有效状态,并且只要Value
属性返回false,就不会为数据绑定的isValueFieldEnable
属性返回任何错误。
视图中的绑定始终相同。您的视图模型应该定义Value
属性是否设置为有效值。当isValueFieldEnable
为假时,应始终认为该属性有效。那是你的验证逻辑。这应该在您的视图模型类中实现,而不是在您的视图中实现。