我正在对 .NET 4.0 中的几个 WPF 控件应用绑定(bind)验证。目前,当我的控件未通过某组 ValidationRules 时,它们会变成红色并显示一条小警告消息。问题是,即使它们被禁用,它们仍然无法通过各自的验证。这可能会误导最终用户,因此我只想在启用控件时运行验证。我不太确定如何实现此功能。
我通过通过特定验证类连接的 Binding.ValidationRule 进行验证。
编辑: 显示错误的原因是因为我的验证检查该字段是否为空。当表单加载时,字段为空并且验证失败,即使它们被禁用也是如此。
最佳答案
让我回答我自己的问题:
根据我的研究,确实没有办法做到这一点。在控件被禁用时不显示验证错误的最佳方法是创建一个 Validation.ErrorTemplate,它专门用于控件验证失败并被禁用时。我使用这种技术来解决这个问题。
类似的东西:
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel>
<Border BorderBrush="Gray" BorderThickness="0">
<AdornedElementPlaceholder/>
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
当验证失败且控件被禁用时,不会显示红色错误边框。
关于c# - 仅当启用控件时才在 WPF 中运行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369508/