如果IsEnabled属性为False WPF,则禁用ValidatesOnDataErrors

时间:2017-06-05 08:35:26

标签: c# wpf mvvm properties textbox

我有一个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>

谢谢。

1 个答案:

答案 0 :(得分:1)

正如@Il Vic所建议的那样,验证逻辑应该在视图模型类中实现。

您不会在视图中更改绑定的ValidatesOnDataErrors属性。相反,您应该确保视图模型始终处于有效状态,并且只要Value属性返回false,就不会为数据绑定的isValueFieldEnable属性返回任何错误。

视图中的绑定始终相同。您的视图模型应该定义Value属性是否设置为有效值。当isValueFieldEnable为假时,应始终认为该属性有效。那是你的验证逻辑。这应该在您的视图模型类中实现,而不是在您的视图中实现。