我目前正在编写一个应该通过IDataErrorInfo验证其表单的应用程序。
我的ViewModel实现了它,它很简单。问题是我需要根据给定的验证错误字符串更改控件周围的边框。 我当前的实现仅适用于第一次验证,之后不再触发触发器。
我的View.xaml(部分):
<TextBox Grid.Row="1" Grid.Column="3" MaxLength="10" Text="{Binding Code, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" Style="{DynamicResource TextBoxStyle}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}"/>
My ErrorTemplate:
<ControlTemplate x:Key="ErrorTemplate">
<Border BorderThickness="2" x:Name="ValidationBorder">
<AdornedElementPlaceholder x:Name="ValidationElement"/>
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="Black"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ValidationElement, Path=AdornedElement.(Validation.Errors), Converter={StaticResource ValidationConverter}}" Value="NotValid">
<Setter Property="BorderBrush" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ValidationElement, Path=AdornedElement.(Validation.Errors), Converter={StaticResource ValidationConverter}}" Value="Valid">
<Setter Property="BorderBrush" Value="LawnGreen"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</ControlTemplate>
我在转换器中设置了一个断点,我得到了正确的值,但问题仍然存在,触发器只被触发一次,之后再也没有了。
我可能错过了什么建议?