在我只需要验证一个属性后,我决定编写验证规则而不是IDataErrorInfo。我写了这种风格:
<Style BasedOn="{StaticResource enableStyle}" TargetType="{x:Type TextBox}" x:Key="validationErrorTemplate">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
我刚才发现这个触发器正常工作。但是,如果放入无效之前的有效值,则仅显示默认错误模板(红色边框)。自定义模板不会更改任何内容:
<Style.Setters>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" BorderBrush="Red">
<AdornedElementPlaceholder/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>