本文介绍了WPF-验证-由于AdornerDecorator,验证错误消息落后于其他控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果文本框有错误,我已经在ViewModel中实现了IDataErrorInfo以返回字符串.
I have implemented IDataErrorInfo in my ViewModel to return a string if the text box has error.
public string this[string columnName]
{
get { return "Error-- This is a long error message - sd"; }
}
但是此错误消息落后于UI上的其他控件,如下所示.
But this error message goes behind the other control on the UI as shown below.
下面是xaml:
<Window x:Class="Test.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="600" Width="600">
<Window.Resources>
<ControlTemplate x:Key="validationTemplateNew">
<DockPanel LastChildFill="True">
<TextBlock Name="ErrorText" DockPanel.Dock="Bottom" Foreground="White" Background="Red"
FontSize="12" Padding="2" FontFamily="Trebuchet MS"
Margin="5,5,0,0"
TextWrapping="Wrap"
Text="{Binding [0].ErrorContent}" ></TextBlock>
<AdornedElementPlaceholder Name="ErrorTextBox" />
</DockPanel>
</ControlTemplate>
<Style x:Key="ValidationStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BitmapEffect">
<Setter.Value>
<BitmapEffectGroup>
<OuterGlowBitmapEffect GlowColor="Red" GlowSize="3" Noise="0.6"></OuterGlowBitmapEffect>
</BitmapEffectGroup>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ItemsControl Name="ItemCtrl">
<AdornerDecorator>
<TextBox
FontSize="11"
Margin="10"
Width="250"
VerticalAlignment="Center"
Text="{Binding Path=StrText, ValidatesOnDataErrors=True,
UpdateSourceTrigger=PropertyChanged}"
Validation.ErrorTemplate="{StaticResource validationTemplateNew}"
Style="{StaticResource ValidationStyle}"
>
</TextBox>
</AdornerDecorator>
<TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/>
<TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/>
<TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/>
<TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/>
<TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/>
</ItemsControl>
</Grid>
</Window>
请让我知道如何使用AdornerDecorator,以使错误消息与其他控件重叠并且不会落后.
Please let me know how to use AdornerDecorator such that the error message overlaps the other controls and doesn't go behind.
我的应用程序是这样,如果我不使用AdornerDecorator,则根本不会显示错误消息.
My application is such that if I don't use AdornerDecorator, the error message is not displayed at all.
推荐答案
在AdornerDecorator上添加Grid.ZIndex应该足够
Adding Grid.ZIndex on the AdornerDecorator should be enough
<Grid>
<ItemsControl Name="ItemCtrl">
<AdornerDecorator Grid.ZIndex="1">
这篇关于WPF-验证-由于AdornerDecorator,验证错误消息落后于其他控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!