Sto cercando di implementare la convalida nella mia applicazione WPF utilizzando l'interfaccia IDataErrorInfo
, e ho incontrato una situazione non-così-desiderabile.Modello di errore viene visualizzato sopra altri controlli, quando dovrebbe essere nascosto
ho questo modello che viene utilizzato quando un controllo non riesce a convalidare
<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>
Tutto è bene fino a quando cerco di visualizzare qualcosa sopra il controllo che ha fallito la validazione, come ad esempio la visualizzazione di un elemento del bacino sopra di esso:
come posso evitare questo e fare il mio modello di errore visualizzato sotto la voce dock, come dovrebbe?
EDIT
ho scoperto che avrei potuto avvolgere la mia TextBox
con una AdornerDecorator
per risolvere questo problema, ma davvero non voglio fare questo per ogni TextBox
di controllo nella mia applicazione. C'è forse un modo per impostarlo con un Style
o in qualche altro modo?
EDIT 2
probabilmente potrei cambiare il ControlTemplate predefinito TextBox
per includere un AdornerDecorator
, ma non sono troppo appassionato di cambiare qualsiasi dei modelli di controllo di default di WPF. Qualsiasi altro suggerimento è benvenuto.
non lo faccio guarda come questo risolve qualsiasi cosa Il bordo è ancora visualizzato sopra la voce del dock. –