【问题标题】:Display validation error in DataGridCell tooltip在 DataGridCell 工具提示中显示验证错误
【发布时间】:2011-11-22 04:41:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    我现在正在做的一个项目中有类似的东西,它是这样的:

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

    【讨论】:

    • 错字 - 应该是:Path=(Validation.Errors)[0].ErrorContent
    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      相关资源
      最近更新 更多