WPF:当出现 IDataErrorInfo 时,在自定义 DataGrid 单元格上显示工具提示消息
WPF: Show Tooltip message on custom DataGrid cells when IDataErrorInfo
我是 WPF 的新手,但在过去的几天里我已经阅读了很多有关它以及 MVVM 的内容。
我的 WPF 显示带有自定义列模板的 DataGrid(使用 Xceed WPF 工具包中的 NumericUpDown 控件)。其中三列包含 3D 矢量的十进制坐标。我使用 IDataErrorInfo 来确保向量的长度永远不会为 0(所有三列不能同时为 0)。到目前为止一切正常,验证失败时单元格标记为红色,但我还想在工具提示或类似内容中显示错误消息。
<DataGrid [...]>
<DataGrid.Columns>
[...]
<DataGridTemplateColumn Header="X" [...]>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
</xctk:DecimalUpDown>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
[... and same thing for Y and Z]
</DataGrid.Columns>
</DataGrid>
这是我现在被困了几个小时的地方,所以我希望你能在这里帮助我:
如何在自定义模板列上显示错误工具提示?
我已经阅读了很多关于错误工具提示的文章和主题,但其中大部分都是关于纯文本框或 DataGridTextColumns 的,并且尝试了很多但到目前为止无法正常工作。
其中大部分看起来像这样:
<Style x:Key="errorStyle" TargetType="{x:Type TextBox}">
<Setter Property="Padding" Value="-2"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
从这里开始:
https://msdn.microsoft.com/library/ee622975%28v=vs.100%29.aspx
或更多示例:
- Display validation error in DataGridCell tooltip
- https://harishasanblog.blogspot.de/2011/01/datagrid-validation-using.html
- WPF data validation and display error message IDataErrorInfo and error templates
这上面的任何内容都没有向我显示任何工具提示。
你能给我一个提示吗,
- 如何 此样式触发器定义必须查找不包含文本框的单元格,
- 其中定义必须是
- 如果该列需要以某种方式引用此定义?
谢谢!
将控件的样式 属性 设置为带有触发器的样式,该触发器在 CellTemplate 中设置控件的工具提示 属性 如果附加 Validation.HasError 属性 returns 正确:
<DataGridTemplateColumn Header="X">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
<xctk:DecimalUpDown.Style>
<Style TargetType="xctk:DecimalUpDown">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Self}}" />
</Trigger>
</Style.Triggers>
</Style>
</xctk:DecimalUpDown.Style>
</xctk:DecimalUpDown>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我是 WPF 的新手,但在过去的几天里我已经阅读了很多有关它以及 MVVM 的内容。 我的 WPF 显示带有自定义列模板的 DataGrid(使用 Xceed WPF 工具包中的 NumericUpDown 控件)。其中三列包含 3D 矢量的十进制坐标。我使用 IDataErrorInfo 来确保向量的长度永远不会为 0(所有三列不能同时为 0)。到目前为止一切正常,验证失败时单元格标记为红色,但我还想在工具提示或类似内容中显示错误消息。
<DataGrid [...]>
<DataGrid.Columns>
[...]
<DataGridTemplateColumn Header="X" [...]>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
</xctk:DecimalUpDown>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
[... and same thing for Y and Z]
</DataGrid.Columns>
</DataGrid>
这是我现在被困了几个小时的地方,所以我希望你能在这里帮助我:
如何在自定义模板列上显示错误工具提示?
我已经阅读了很多关于错误工具提示的文章和主题,但其中大部分都是关于纯文本框或 DataGridTextColumns 的,并且尝试了很多但到目前为止无法正常工作。
其中大部分看起来像这样:
<Style x:Key="errorStyle" TargetType="{x:Type TextBox}">
<Setter Property="Padding" Value="-2"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
从这里开始: https://msdn.microsoft.com/library/ee622975%28v=vs.100%29.aspx
或更多示例:
- Display validation error in DataGridCell tooltip
- https://harishasanblog.blogspot.de/2011/01/datagrid-validation-using.html
- WPF data validation and display error message IDataErrorInfo and error templates
这上面的任何内容都没有向我显示任何工具提示。
你能给我一个提示吗,
- 如何 此样式触发器定义必须查找不包含文本框的单元格,
- 其中定义必须是
- 如果该列需要以某种方式引用此定义?
谢谢!
将控件的样式 属性 设置为带有触发器的样式,该触发器在 CellTemplate 中设置控件的工具提示 属性 如果附加 Validation.HasError 属性 returns 正确:
<DataGridTemplateColumn Header="X">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
<xctk:DecimalUpDown.Style>
<Style TargetType="xctk:DecimalUpDown">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Self}}" />
</Trigger>
</Style.Triggers>
</Style>
</xctk:DecimalUpDown.Style>
</xctk:DecimalUpDown>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>