Szablon błędu jest wyświetlany nad innymi kontrolkami, gdy powinien być ukryty
Usiłuję zaimplementować sprawdzanie poprawności w mojej aplikacji WPF przy użyciuIDataErrorInfo
interfejs, a ja spotkałem się z niezbyt pożądaną sytuacją.
Mam ten szablon, który jest używany, gdy formant nie sprawdza poprawności
<code><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> </code>
Wszystko jest dobrze, dopóki nie spróbuję wyświetlić czegoś ponad kontrolę, która nie przeszła walidacji, na przykład wyświetlenie nad nią elementu dokowania:
Jak mogę tego uniknąć i uczynić mój szablon błędu wyświetlany poniżej elementu dokowania, tak jak powinien?
EDYTOWAĆ
Odkryłem, że mogę owinąć mojeTextBox
zAdornerDecorator
aby to naprawić, ale naprawdę nie chcę tego robić dla każdegoTextBox
kontrola w mojej aplikacji. Czy jest jakiś sposób na ustawienie go za pomocąStyle
czy w jakiś inny sposób?
EDYCJA 2
Prawdopodobnie mogę zmienić domyślneTextBox
ControlTemplate, aby dołączyćAdornerDecorator
, ale nie jestem zbyt zainteresowany zmianą domyślnych szablonów kontroli WPF. Wszelkie inne sugestie są mile widziane.