视图模型是否实现了IDataErrorInfo以进行验证?

Álv*_*cía 7 validation wpf mvvm idataerrorinfo

我有一个使用MVVM模式的应用程序,我想在用户填写信息时实现验证.

我想使用IDataErrorInfo,但我不知道我的视图模型是否实现了该接口,或者我创建新类是否更好.使用IDataErrorInfo和MVVM模式实现验证的最佳方法是什么?

编辑:我看到在一些例子中,实现是在模型中(它与视图模型不同),但在我的情况下,模型基本上是我在创建edmx模型时从数据库创建的POCO实体实体框架,所以我想避免修改这个实体所需要的,因为如果我不需要更新我的模型,我将不得不重新开始工作.

谢谢.

小智 2

将验证逻辑与 UI 分开始终是一个好主意。这样看来,使用IDataErrorInfo是正确的。

在视图模型和模型之间,我更喜欢在视图模型上实现 IDataErrorInfo,因为该接口由 UI 使用。您可以通过直接在测试代码中调用索引器来模拟 UI,但如果您确实需要在业务逻辑层中进行验证逻辑,则这样的调用没有多大意义。

在我们的项目中,验证是一个比较独立的组件,通过配置既可以被表示层使用,也可以被业务逻辑层使用。从视图模型的角度来看,它非常薄,仅包含调用并在索引器内构造验证结果。

另外,另一个考虑因素是 INotifyDataErrorInfo,它由 .Net 4.5 和 Silverlight 提供。它为一个属性提供了更多的验证结果,并为耗时的验证提供了异步验证,这正是我们计划更新到 .Net 4.5 后想要的。

希望它可以帮助你。