wpf使用IDataErrorInfo
时间: 2023-06-28 19:08:53 浏览: 191
在 WPF 中,可以使用 IDataErrorInfo 接口来进行数据验证。该接口定义了两个属性:
- Error:获取对象级别的错误消息。
- Item:获取或设置指定属性的错误消息。
如果一个类实现了 IDataErrorInfo 接口,则可以通过实现这两个属性来为该类提供数据验证功能。
下面是一个示例:
```csharp
public class Person : IDataErrorInfo
{
public string Name { get; set; }
public int Age { get; set; }
public string Error => null;
public string this[string columnName]
{
get
{
string error = null;
switch (columnName)
{
case nameof(Name):
if (string.IsNullOrWhiteSpace(Name))
error = "Name is required.";
break;
case nameof(Age):
if (Age < 0 || Age > 120)
error = "Age must be between 0 and 120.";
break;
}
return error;
}
}
}
```
在上面的示例中,Person 类实现了 IDataErrorInfo 接口,并实现了 Error 和 Item 属性。在 Item 属性中,根据属性名判断需要进行哪些验证,并返回相应的错误消息。在 WPF 中,如果绑定到 Person 类的某个属性并且该属性有错误消息,则会在 UI 上显示相应的错误提示。
例如,下面的 XAML 代码中,使用了 TextBlock 和 TextBox 控件来绑定 Person 类的 Name 属性,并将该属性的错误消息显示在 TextBlock 控件中:
```xml
<TextBlock Text="Name:"/>
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding Path=(Validation.Errors)[0].ErrorContent,
RelativeSource={RelativeSource Self}, ValidatesOnDataErrors=True}"/>
```
阅读全文