绑定到ErrorTemplate中的验证错误

时间:2016-03-15 14:03:34

标签: c# wpf validation templates binding

我目前正在编写一个应该通过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>

我在转换器中设置了一个断点,我得到了正确的值,但问题仍然存在,触发器只被触发一次,之后再也没有了。

我可能错过了什么建议?

0 个答案:

没有答案