WPF自定义验证MVVM

时间:2009-12-10 11:06:18

标签: c# wpf validation mvvm

我遇到了验证用户输入的好方法。我知道我可以实现IDataErrorInfo来对用户输入进行简单的验证,我已经阅读了几篇关于这个主题的文章(例如thisthis)而没有看到它。让我解释一下我遇到的两个问题:

基本上我正在实现一个允许用户在系统中创建用户的应用程序。我的viewmodel使用一组WCF服务来保存其工作。当有人想要创建新用户时,我可以很容易地看到如何使用IDataErrorInfo来禁止输入空的用户名。但是,如果用户名不为空且由于用户名已存在而导致对CreateUser服务的调用失败,那么如何高亮显示用户名文本框?我的第二个问题是我有两个PasswordBox,密码和重复密码。由于我无法数据绑定到Password属性,因此我看不出如何使用IDataErrorInfo方法验证密码是否为空。此外,我需要确保两个密码是相同的,所以这又需要一些自定义机制。

我不是WPF的专家,也许我错过了一些明显的解决方案,所以,如果可以的话,请详细说明如何解决这个问题。

提前致谢,

克劳斯

2 个答案:

答案 0 :(得分:1)

为了执行自定义验证,我建议您使用FluentValidation.NET库。

答案 1 :(得分:1)

我们实现自定义验证,并为每个字段提供IsDirty,IsValid和ErrorMessage属性。然后我们设置控件,文本框,组合等的样式,并使用数据触发器显示对象状态,如果它无效,我们可能会对控件进行小的检查,当用户将鼠标悬停在工具提示上时会显示错误消息。

here是密码框的解决方法,此处存在安全问题,但这一切都取决于您需要的安全性不是吗?