我有一个简单的WPF网格,有两行和两列。第二列包含TextBox-es,它们绑定到某些视图模型属性。我需要自定义这些TextBoxes验证ErrorTemplates,以在问题框的上方显示验证错误。
以下代码
<Style TargetType="Control" x:Key="ValidationControlStyle">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<TextBlock Foreground="Red"
Text="{Binding ElementName=ErrorAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
<AdornedElementPlaceholder x:Name="ErrorAdorner"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>当错误信息视觉上重叠在行上时,会产生非常难看的结果(见下图)。

如何将验证错误放在问题字段的上方(网格行应该增加其高度)?
发布于 2016-06-15 15:57:08
也许可以将验证TextBlock放在主UI层中,并使用基于Validation.HasError的DataTrigger设置其Visibility?
绑定语法应该如下所示:
<Style x:Key="ErrorTextBlock" TargetType="{x:Type TextBlock}">
<Setter Property="Visibility" Value="False" />
<Setter Property="Foreground" Value="Red" />
<DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Validation.HasError" Value="True">
<Setter Property="Visibility" Value="True"/>
</DataTrigger>
</Style>我相信如果你想要的话,也有一些方法可以使它变得通用:)
https://stackoverflow.com/questions/37821398
复制相似问题