【问题标题】:Disable ValidatesOnDataErrors if IsEnabled property is False WPF如果 IsEnabled 属性为 False WPF,则禁用 ValidatesOnDataErrors
【发布时间】:2017-11-05 23:43:18
【问题描述】:

我有一个 MVVM 模式的程序,我有一个包含一些对象的视图,其中一个是一个 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>

谢谢。

【问题讨论】:

  • isValueFieldEnable变为false时,您可以在TextBox的样式中更改DataTrigger中的整个Text绑定。
  • 如果您的isValueFieldEnable 为假,您的IDataErrorInfo 应该返回“无错误”
  • @IlVic 你是对的,我会试试的。

标签: c# wpf mvvm properties textbox


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2011-03-07
    • 2011-02-07
    相关资源
    最近更新 更多