我有一个 DataGrid,它的 Column 绑定了一个“int”类型的属性。我正在使用 IDataErrorInfo 进行验证。我的验证规则运行良好,一旦我更改单元格的值,它们就会被触发。假设用户输入的值小于 0,我在工具提示中显示相应的错误。当用户清除文本框的值时出现问题。在这种情况下,IDataErrorInfo 永远不会触发,因此我无法通过工具提示显示用户验证错误,说明该值不能为空。DataGrid 在文本框周围加上红色边框,这很好,还有一个“!” 在行标题处签名,但工具提示中没有验证错误,因为 IDataErrorInfo 从未被触发。如果文本框的值被清除,我可以做些什么来触发 IDataError 信息?
编辑:
XAML
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayOrder, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding DisplayOrder, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
DisplayOrder 属性
public int DisplayOrder
{
get
{
return m_DisplayOrder;
}
set
{
if(value != m_DisplayOrder)
{
m_DisplayOrder = value;
OnPropertyChanged("DisplayOrder");
}
}
}