我有一个绑定到视图模型的用户控件,我使用IDataErrorInfo
进行验证,并在验证错误的情况下使用默认的红色边框指示。
以下是我的一个控件:
<TextBox Text="{Binding Path=Code, ValidatesOnDataErrors=True}"></TextBox>
一切正常,在初始化期间,所有具有验证错误的控件都会显示此红色边框。除初始化期间不可见(未选中)的TabItem
控件内的控件之外的所有控件。这些控件不显示红色边框,尽管验证也可以正常运行。
我隔离了问题,很明显红色边框没有出现,因为控件在用户控件的初始布局中不可见。
我的问题是我错过了什么,如果没有,那么我如何手动强制验证用户控件中的所有控件再次运行,以便至少在TabControl.SelectionChanged
期间显示红色边框?
提前谢谢。
答案 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>