在DataGridCell工具提示中显示验证错误

时间:2011-09-21 17:59:20

标签: wpf datagrid

我有一个WPF DataGrid,它显示实现IDataErrorInfo的类型。正如预期的那样,当验证失败时,行会获得红色感叹号,无效的单元格将获得红色突出显示。 enter image description here

这一切都很好;但是,我希望验证错误消息显示在无效单元格的工具提示中,以便用户有一些错误的指示。我现在有:

<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="ToolTip"
                Value="{Binding RelativeSource={RelativeSource Self},
                                                Path=(Validation.Errors[0].ErrorContent}"/>
     </Style>
</DataGrid.CellStyle>

此方法适用于TextBox,但不适用于DataGridCell。有什么区别?

2 个答案:

答案 0 :(得分:7)

我现在正在进行的项目中有类似的东西,它就是这样的:

<DataGridTextColumn.ElementStyle>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="DataGridCell.ToolTip"
                Value="{Binding RelativeSource={RelativeSource Self},
                                                Path=(Validation.Errors)[0].ErrorContent}"/>
     </Style>
</DataGridTextColumn.ElementStyle>

答案 1 :(得分:2)

看一下这篇MSDN日志文章:

https://blogs.msdn.microsoft.com/bethmassi/2008/06/27/displaying-data-validation-messages-in-wpf/

按照其说明创建一个文本框单元格编辑模板,如下所示:

<Style TargetType="TextBox" x:Key="errTemplate">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
              Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                     Path=(Validation.Errors)[0].ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>

然后,您可以通过设置EditingElementStyle来在数据网格中使用它,如下所示:

<DataGridTextColumn Header="Variable" 
                    Binding="{Binding Variable, ValidatesOnDataErrors=True}" 
                    EditingElementStyle="{StaticResource errTemplate}"/>

使用数据触发器非常重要,这样当出现错误时,您可以支持标准工具提示和工具提示,如本文所述:

Tooltip Not Showing Up When No Validation Error WPF