这是一个 WPF/MVVM 项目。我正在使用 MS 企业库验证应用程序块 v5.0。
要求是,如果组合框的值为“Facilities”或“Other”,则 Comment 字段必须具有值。
也就是说,我创建了一个自定义验证器,并以这种方式执行验证:
ValidationResults results = Validation.Validate<Annotation>(this.Annotation);
还有其他错误可能性,这些都包含在标准 VAB 属性中。
这似乎工作正常。所以,现在,如果我有一个错误条件,它可能是任何一个规则,并且我可以查询 ValidationResults 集合以确定哪个属性有错误。但是,发生这种情况时,我无法为特定元素应用样式。有一次,我对给定控件使用属性级别验证,但是当我需要比较一个验证规则的多个属性时,这不起作用。
vab:Validate.BindingForProperty="Text"
上面的属性和这种样式适用于简单的单个属性验证,如 StringLenghtValidator。这在我的场景中不起作用。
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="White"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
多属性自定义验证器报告错误后,如何让 Comments 文本框具有某种样式?