我有一种样式TextBox
来显示验证错误消息,如下所示:
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Border BorderBrush="{Binding Path=ErrorContent,
Converter={StaticResource ValidationErrorToBrushConverter}}" BorderThickness="2">
<AdornedElementPlaceholder />
</Border>
<Image Name="image1" Height="14" Width="14" Stretch="Fill" Margin="1,1,1,1"
Source="{Binding Path=ErrorContent,
Converter={StaticResource ValidationErrorToImageSourceConverter}}"
ToolTip="{Binding Path=ErrorContent}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
生活TextBox
在一个Expander
。当我打开扩展器时,TextBox
允许输入,但如果输入是NullorEmpty
或包含特殊字符,则验证将失败。
我的问题是,当我触发验证错误时,TextBox
指示灯会亮起红色并显示带有消息的图标作为工具提示。到目前为止一切都很好。但是当我在Expander
没有通过验证的情况下关闭时,带有工具提示的红色轮廓和图标仍然存在!即使Expander
缩小了!只是漂浮在那里......这不是好的行为。
关于如何让验证内容与所有其他控件一起隐藏的任何想法Expander
?此外,用于验证的 Style 是在 UserControl 的资源中声明的,而不是在其Expander
本身中。