IDataErrorInfo红色边框和TabItem控件

时间:2011-07-29 10:14:33

标签: c# wpf binding

我有一个绑定到视图模型的用户控件,我使用IDataErrorInfo进行验证,并在验证错误的情况下使用默认的红色边框指示。

以下是我的一个控件:

<TextBox Text="{Binding Path=Code, ValidatesOnDataErrors=True}"></TextBox>

一切正常,在初始化期间,所有具有验证错误的控件都会显示此红色边框。除初始化期间不可见(未选中)的TabItem控件内的控件之外的所有控件。这些控件不显示红色边框,尽管验证也可以正常运行。

我隔离了问题,很明显红色边框没有出现,因为控件在用户控件的初始布局中不可见。

我的问题是我错过了什么,如果没有,那么我如何手动强制验证用户控件中的所有控件再次运行,以便至少在TabControl.SelectionChanged期间显示红色边框?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决方法

我创建了一个样式,只要控件的IsVisible属性设置为true,我就应用自己的Validation.ErrorTemplate

<Style TargetType="{x:Type TextBox}">
            <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"></Setter>
                        <Style.Triggers>
                                    <Trigger Property="IsVisible" Value="True">
                    <Setter Property="Validation.ErrorTemplate">
                        <Setter.Value>
                            <ControlTemplate>
                                <Border BorderBrush="Red" BorderThickness="1" >
                                    <AdornedElementPlaceholder/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>