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

发布于 12-06 05:16 字数 633 浏览 1 评论 0原文

我有一个 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。有什么区别?

I have a WPF DataGrid which displays types that implement IDataErrorInfo. As expected when the validation fails the row gets the red exclamation mark and the invalid cell gets the red highlight.
enter image description here

This is all well and good; however, I want the validation error message to display in the tooltip of the invalid cell so the user has some indication of what is wrong. I presently have:

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

This approach works for TextBox but not for DataGridCell. What is the difference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日2024-12-13 05:16:32

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

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

I have something similiar in a project I'm working on right now, and it goes something like this:

<DataGridTextColumn.ElementStyle>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="DataGridCell.ToolTip"
                Value="{Binding RelativeSource={RelativeSource Self},
                                                Path=(Validation.Errors)[0].ErrorContent}"/>
     </Style>
</DataGridTextColumn.ElementStyle>
作死小能手2024-12-13 05:16:32

查看此 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}"/>

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

工具提示不没有验证错误时显示 WPF

Take a look at this MSDN log post:

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

Follow its instructions to create a textbox cell editing template that will look something like this:

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

Then, you can use it in your datagrid by setting the EditingElementStyle like so:

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

It is important to use the data trigger so that you can support a standard tool tip as well as a tool tip when there is an error as explained in this post:

Tooltip Not Showing Up When No Validation Error WPF

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文