WPF:数据验证(3)
时间: 2023-10-19 19:20:31 浏览: 123
在 WPF 中,数据验证是一个重要的主题。WPF 中的数据验证分为两种:验证数据模型和验证用户界面输入。前者通常是通过使用数据模型中的属性和方法来完成的,而后者通常是通过使用 WPF 的数据绑定功能来完成的。
在本文中,我们将重点讨论如何使用 WPF 的数据绑定功能来验证用户界面输入。
WPF 中的数据绑定提供了两种验证方式:基于属性的验证和基于规则的验证。基于属性的验证是针对单个属性进行的验证,而基于规则的验证则是针对整个对象进行的验证。
基于属性的验证可以通过设置属性的 Metadata 来实现。例如,可以使用 RequiredAttribute 来标记属性为必填项。当用户尝试提交表单并且未填写必填项时,WPF 将会自动显示错误提示信息。
基于规则的验证可以通过实现 IDataErrorInfo 接口来实现。该接口包含两个属性:Error 和 Item。Error 属性用于返回整个对象的错误信息,而 Item 属性用于返回单个属性的错误信息。
下面是一个示例,演示如何使用 IDataErrorInfo 接口来实现基于规则的验证:
```csharp
public class Person : IDataErrorInfo
{
public string Name { get; set; }
public int Age { get; set; }
public string this[string columnName]
{
get
{
string error = null;
switch (columnName)
{
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;
}
}
public string Error
{
get { return null; }
}
}
```
在上面的示例中,我们实现了 IDataErrorInfo 接口,并使用 switch 语句检查每个属性的值。如果属性的值不符合要求,我们就返回一个错误信息。在 XAML 中,可以使用 Binding.ValidationRules 属性来指定要使用的验证规则。
```xaml
<TextBox Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding Path=Age, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
```
在上面的示例中,我们将 ValidatesOnDataErrors 属性设置为 True,以启用基于规则的验证。当用户尝试提交表单时,WPF 将自动检查数据模型中的属性并显示错误提示信息。
阅读全文