WPF-验证-验证错误消息由于 AdornerDecorator 而落后于其他控件
Posted
技术标签:
【中文标题】WPF-验证-验证错误消息由于 AdornerDecorator 而落后于其他控件【英文标题】:WPF- Validation -The validation error message goes behind the other controls because of AdornerDecorator 【发布时间】:2010-12-29 07:37:09 【问题描述】:我已经在我的 ViewModel 中实现了 IDataErrorInfo 以在文本框有错误时返回一个字符串。
public string this[string columnName]
get return "Error-- This is a long error message - sd";
但此错误消息位于 UI 上的其他控件之后,如下所示。
下面是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 以使错误消息与其他控件重叠并且不会落后。
我的应用程序是这样的,如果我不使用 AdornerDecorator,则根本不会显示错误消息。
【问题讨论】:
【参考方案1】:在 AdornerDecorator 上添加 Grid.ZIndex 就足够了
<Grid>
<ItemsControl Name="ItemCtrl">
<AdornerDecorator Grid.ZIndex="1">
【讨论】:
以上是关于WPF-验证-验证错误消息由于 AdornerDecorator 而落后于其他控件的主要内容,如果未能解决你的问题,请参考以下文章