我正在尝试使用该IDataErrorInfo
接口在我的 WPF 应用程序中实现验证,但我遇到了一个不太理想的情况。
我有这个模板,当控件无法验证时使用
<ControlTemplate x:Key="errorTemplate">
<DockPanel LastChildFill="true">
<Border Background="Red" DockPanel.Dock="Right" Margin="5,0,0,0" Width="20" Height="20" CornerRadius="10"
ToolTip="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
<TextBlock Text="!" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" Foreground="White" />
</Border>
<AdornedElementPlaceholder Name="customAdorner" VerticalAlignment="Center" >
<Border BorderBrush="red" BorderThickness="1" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
一切都很好,直到我尝试在未通过验证的控件上方显示某些内容,例如在其上方显示停靠项:
我怎样才能避免这种情况并让我的错误模板显示在停靠项下方,因为它应该?
编辑
我发现我可以TextBox
用 anAdornerDecorator
来解决这个问题,但我真的不想为TextBox
我的应用程序中的每个控件都这样做。有没有办法用aStyle
或其他方式设置它?
编辑 2
我可能会更改默认TextBox
ControlTemplate 以包含AdornerDecorator
,但我不太热衷于更改 WPF 的任何默认控件模板。欢迎任何其他建议。