Estoy tratando de implementar la validación en mi aplicación WPF usando la interfaz IDataErrorInfo
, y he encontrado una situación no tan deseada.La plantilla de error se muestra encima de otros controles, cuando debería estar oculta
tengo esta plantilla que se utiliza cuando un control no puede validar
<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>
Todo está bien hasta que intento mostrar algo por encima del control que falló la validación, por ejemplo, mostrar un elemento de muelle por encima de ella:
¿Cómo puedo evitar esto y hacer mi plantilla de error que aparece debajo del elemento de muelle, como debe ser?
EDITAR
me encontré que podría envolver mi TextBox
con un AdornerDecorator
de solucionar este problema, pero realmente no quiero hacer esto para todos y cada uno TextBox
de control en mi solicitud. ¿Hay alguna forma de configurarlo con un Style
o de otra forma?
EDIT 2
probablemente podría cambiar el valor predeterminado ControlTemplate TextBox
incluir un AdornerDecorator
, pero no estoy demasiado interesado en el cambio de cualquiera de las plantillas de control por defecto de WPF. Cualquier otra sugerencia es bienvenida.
no lo hago mira cómo esto resuelve algo. El borde todavía se muestra encima del elemento de la base. –