WPF 中的验证 - 自定义验证规则或 IDataErrorInfo

作者:编程家 分类: swift 时间:2025-10-29

自定义验证规则和 IDataErrorInfo 是 WPF 中常用的验证技术,它们可以帮助我们在用户输入数据时进行验证,并及时地提供错误信息。本文将介绍如何 一篇关于 WPF 中自定义验证规则和 IDataErrorInfo 的文章,并提供相应的案例代码。

什么是自定义验证规则和 IDataErrorInfo

在 WPF 中,我们经常需要对用户输入的数据进行验证,以确保数据的准确性和完整性。自定义验证规则和 IDataErrorInfo 是两种常见的验证技术,它们可以帮助我们实现这一目标。

自定义验证规则允许我们在 XAML 中定义特定的验证逻辑,以验证用户输入的数据是否符合要求。通过使用自定义验证规则,我们可以在用户输入数据之前或之后执行验证逻辑,并及时地提供错误信息。

IDataErrorInfo 是一个接口,它定义了两个属性:Error 和 this[string columnName]。通过实现这个接口,我们可以为每个数据字段提供自定义的错误信息。当数据发生错误时,WPF 会自动调用这些属性,并将错误信息展示给用户。

案例代码

为了更好地理解自定义验证规则和 IDataErrorInfo 的使用方法,我们将以一个简单的登录窗口为例来演示。

首先,我们需要在 XAML 中定义登录窗口的布局和控件。以下是一个简单的登录窗口示例:

xaml

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Login" Height="250" Width="350">

接下来,我们需要在视图模型中实现自定义验证规则和 IDataErrorInfo 接口。以下是一个简单的视图模型示例:

csharp

public class LoginViewModel : INotifyPropertyChanged, IDataErrorInfo

{

private string _username;

private string _password;

private string _error;

public string Username

{

get { return _username; }

set

{

_username = value;

OnPropertyChanged(nameof(Username));

}

}

public string Password

{

get { return _password; }

set

{

_password = value;

OnPropertyChanged(nameof(Password));

}

}

public string Error

{

get { return _error; }

set

{

_error = value;

OnPropertyChanged(nameof(Error));

}

}

public string this[string columnName]

{

get

{

if (columnName == nameof(Username))

{

if (string.IsNullOrEmpty(Username))

return "Username is required.";

}

if (columnName == nameof(Password))

{

if (string.IsNullOrEmpty(Password))

return "Password is required.";

}

return null;

}

}

public ICommand LoginCommand { get; }

// 省略其他代码...

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)

{

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

}

}

在上述代码中,我们首先定义了用户名(Username)和密码(Password)两个属性,以及一个错误信息属性(Error)。然后,我们实现了 IDataErrorInfo 接口的 this[string columnName] 属性,根据不同的数据字段返回相应的错误信息。最后,我们还定义了一个登录命令(LoginCommand),用于处理用户点击登录按钮的操作。

使用自定义验证规则和 IDataErrorInfo

现在,我们已经定义了登录窗口的布局和控件,并在视图模型中实现了自定义验证规则和 IDataErrorInfo 接口。接下来,我们需要将视图模型与视图进行绑定,以实现验证逻辑的执行和错误信息的展示。

在代码中,我们可以通过以下方式将视图模型与视图进行绑定:

csharp

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

DataContext = new LoginViewModel();

}

}

通过设置 DataContext 属性,我们将视图模型与视图进行了绑定。这样,在用户输入数据时,WPF 会自动调用视图模型中的验证逻辑,并将错误信息展示在错误信息文本块(TextBlock)中。

在本文中,我们介绍了 WPF 中自定义验证规则和 IDataErrorInfo 的使用方法,并提供了一个简单的案例代码。通过使用自定义验证规则和 IDataErrorInfo,我们可以方便地对用户输入的数据进行验证,并及时地提供错误信息。希望本文能帮助你更好地理解和使用这两种验证技术。