WPF验证ErrorTemplate显示故障

时间:2016-06-14 20:20:37

标签: wpf validation errortemplate

我有一个简单的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>
当错误消息在视觉上与行上方重叠时,

会给出非常难看的结果(见下图)

enter image description here

如何在问题字段上方放置验证错误(网格行应该增加其高度)?

1 个答案:

答案 0 :(得分:0)

也许将验证TextBlock放在主UI图层中,并使用基于Visibility的DataTrigger设置其Validation.HasError

绑定语法应该是这样的:

<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>

如果你愿意,我确信有一些方法可以使它成为通用的。)