1
我有一个DataGrid,它有一个DataGridTextColumn,其中包含要基于其他单元格的值在同一行中进行验证的项目。该列绑定到某个数据项的属性。同一数据项的另一个属性包含类似输入掩码的内容。验证应该使用当前行数据项的输入掩码检查新值。该输入掩码不会在窗体上的任何位置进行编辑(无需跟踪输入掩码更改),但输入掩码对于每行都可能不同。那么,我该如何编写一个像这样的自定义验证器?我已经试过如下:验证基于此数据项的其他属性的单元格值
<DataGridTextColumn Width="*">
<DataGridTextColumn.Binding>
<Binding Path="Name" Mode="TwoWay" UpdateSourceTrigger="LostFocus" ValidatesOnExceptions="True" NotifyOnValidationError="True" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<validation:Class2 ValidatesOnTargetUpdated="True" Format="999" />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
而且这里有云验证码:
class Class2 : ValidationRule
{
/// <summary>
/// input mask
/// </summary>
public string Format { get; set; }
/// <param name="value">cell's new value that should be validated against input mask</param>
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
// validation logic goes here
return new ValidationResult(true, null);
}
}
但现在看来,我不能Class2.Format属性绑定到数据项,因为Class2中不继承来自DependencyObject。我认为我可以解决这个问题,如果我只是从C#代码手动初始化所有Format值,但我认为使用XAML绑定表达式应该有更好的解决方案。
任何想法?