У меня есть стиль для 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
уменьшенным! Просто плавать там ... Это нехорошее поведение.
Есть какие-нибудь идеи о том, как спрятать материал Validation вместе со всеми другими элементами управления в Expander
? Кроме того, стиль для проверки объявляется в ресурсах UserControl, а не в самом Expander
.