2017-06-05 110 views
0

我在MVVM模式中有一个程序,并且我有一个包含一些对象的View,其中一个是Value TextBox,它在写入文本时ValidatesOnDataErrors。如果IsEnabled属性为False,则禁用ValidatesOnDataErrors WPF

此外,我有一个绑定到它的IsEnabled属性,它在ViewModel上根据我所做的一些条件进行了更改。

我想能够消除IsEnabled的绑定行为是False时ValidatesOnDataErrors(使其为False),我该怎么做?

<StackPanel> 
    ..... 

    <TextBox Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}" IsEnabled="{Binding isValueFieldEnable}"/> 

    ..... 

</StackPanel> 

谢谢。

+0

当'isValueFieldEnable'变为'false'时,您可以在'TextBox'的样式的'DataTrigger'中更改整个'Text'绑定。 – Maxim

+1

只要你的'IDataErrorInfo'应该返回“没有错误”,如果你的'isValueFieldEnable'为false –

+0

@IlVic你是对的,我会试试看。 – Orionlk

回答

1

由于@Il维克认为这个验证逻辑应该在视图模型类中实现。

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

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

相关问题