WPF使用IDataErrorInfo进行数据校验
时间: 2023-12-03 16:46:08 浏览: 25
WPF提供了一种方便的方式来进行数据校验,即通过实现 IDataErrorInfo 接口。IDataErrorInfo 接口提供了两个属性:Error 和 Item,以及一个方法:GetError(string propertyName)。其中 Error 属性返回当前对象的整体错误信息,而 Item 属性返回属性名称对应的值。GetError(string propertyName) 方法则返回指定属性名称对应的错误信息。
要使用 IDataErrorInfo 进行数据校验,需要在 ViewModel 或 Model 类中实现 IDataErrorInfo 接口,并在其中实现 GetError(string propertyName) 方法。在该方法中,可以根据 propertyName 参数判断需要校验哪个属性,并返回相应的错误信息。例如:
```csharp
public class PersonViewModel : IDataErrorInfo
{
public string Name { get; set; }
public int Age { get; set; }
public string Error
{
get { return null; }
}
public string this[string propertyName]
{
get
{
string error = null;
switch (propertyName)
{
case "Name":
if (string.IsNullOrEmpty(Name))
{
error = "Name is required.";
}
break;
case "Age":
if (Age < 0 || Age > 120)
{
error = "Age must be between 0 and 120.";
}
break;
}
return error;
}
}
}
```
在 XAML 中,可以使用 Binding 的 ValidatesOnDataErrors 属性来启用 IDataErrorInfo 校验。例如:
```xml
<TextBox Text="{Binding Name, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding Age, ValidatesOnDataErrors=True}" />
```
这样,当用户在文本框中输入无效数据时,会自动显示相应的错误信息。如果要在提交表单时进行整体校验,可以检查 Error 属性是否为 null。如果不为 null,则表示存在错误信息,需要提示用户。