我正在尝试验证DataGrid中的单元格。这是我第一次尝试验证。由于我不熟悉,因此遇到了一些验证问题。
我创建了一个名为StringIsNullOrEmptyValidationRule.cs的类。该类检查字符串是否为null或""。
以下是StringIsNullOrEmptyValidationRule.cs的代码:
class StringIsNullOrEmptyValidationRule : ValidationRule
{
private string _errorMessage = "";
public string ErrorMessage
{
get
{
return _errorMessage;
}
set
{
_errorMessage = value;
}
}
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
ValidationResult result = new ValidationResult(true, null);
if (value == null || ((string)value).Trim() == "")
{
result = new ValidationResult(false, this.ErrorMessage);
}
return result;
}
}
现在我在MainWindow.xaml中有一个DataGrid,它与一个名为People的ObservableCollection绑定。这是我的DataGrid:
<DataGrid x:Name="maindg" ItemsSource="{Binding People}" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="CellOrRowHeader">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" />
<DataGridTextColumn Header="Last Name">
<DataGridTextColumn.Binding>
<Binding Path="LastName">
<Binding.ValidationRules>
<local:StringIsNullOrEmptyValidationRule ErrorMessage="LastName is required" />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<DataGridTextColumn Header="City" Binding="{Binding City}" />
</DataGrid.Columns>
</DataGrid>
问题 :
我在StringIsNullOrEmptyValidationRule的Validate方法的第一行设置了断点。当我不在LastName列下的单元格中输入任何数据,尝试移动离开该单元格时,它不会触发断点,这意味着验证甚至没有进行检查。
如果我在LastName列下的单元格中输入一些数据,然后尝试移动离开该单元格,它将尝试验证该单元格。因此它会触发断点。
那么,我的问题是如何验证空单元格?