C# Datagrid模板列文本框验证错误模板
我有一个WPF数据网格,它有几列,其中一列包含一个文本框 此文本框绑定到执行验证的视图模型中的值 验证非常有效 我有一个样式,允许用户将鼠标悬停在文本框上,并将错误显示为工具提示,并且在文本框周围保留标准的红色边框 当此文本框不在数据网格内时,它与验证完美配合,导致文本框的边框变为红色 但是,当数据网格列的一部分出现时,它似乎将整行的边框设置为红色 我尝试在datagridcell、行和数据网格本身上设置“Validation.ErrorTemplate=“{x:Null}”,但没有效果 看起来datagrid说“我在这一行中有一个无效的控件,因此整行都必须无效”,而我只希望该控件显示为无效 有人能帮我完成这件事吗 XAMLC# Datagrid模板列文本框验证错误模板,c#,wpf,validation,datagrid,C#,Wpf,Validation,Datagrid,我有一个WPF数据网格,它有几列,其中一列包含一个文本框 此文本框绑定到执行验证的视图模型中的值 验证非常有效 我有一个样式,允许用户将鼠标悬停在文本框上,并将错误显示为工具提示,并且在文本框周围保留标准的红色边框 当此文本框不在数据网格内时,它与验证完美配合,导致文本框的边框变为红色 但是,当数据网格列的一部分出现时,它似乎将整行的边框设置为红色 我尝试在datagridcell、行和数据网格本身上设置“Validation.ErrorTemplate=“{x:Null}”,但没有效果 看起来
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{x:Static languages:Strings.FullNameColumnTitle}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Width="300"
HorizontalAlignment="Left"
Style="{StaticResource DataGridEditableFieldTextBoxStyle}"
Text="{Binding FullName,
Mode=TwoWay,
UpdateSourceTrigger=LostFocus,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
文本框样式
<!-- A style that makes the text box look like a text block until it has keyboard focus -->
<Style x:Key="DataGridEditableFieldTextBoxStyle"
BasedOn="{StaticResource NormalTextBoxStyle}"
TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="{StaticResource CreamBrush}" />
<Setter Property="Margin" Value="5" />
<Setter Property="Foreground" Value="{StaticResource BlackBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="False">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource CreamBrush}" />
<Setter Property="Margin" Value="5" />
<Setter Property="BorderThickness" Value="0" />
</Trigger>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent, Converter={StaticResource ErrorCodeConverter}}" />
</Trigger>
</Style.Triggers>
</Style>
当前效应
所需效果
这将显示数据网格外部的文本框
删除文本框的宽度,并将水平对齐更改为拉伸