【发布时间】:2013-07-23 14:58:59
【问题描述】:
我有一个使用 MVVM 模式的应用程序,我想在用户填写信息时实现验证。
我想使用 IDataErrorInfo,但我不知道我的视图模型实现该接口是否是个好主意,或者我创建一个新类是否更好。使用 IDataErrorInfo 和 MVVM 模式实现验证的最佳方法是什么?
编辑:我看到在某些示例中,实现在模型中(它与视图模型不同),但在我的情况下,模型基本上是我在创建我的数据库时从我的数据库创建的 POCO 实体edmx 模型与实体框架,所以我想避免需要修改这个实体,因为如果我不需要更新我的模型,我将不得不再次做这项工作。
谢谢。
【问题讨论】:
-
我会说VM实现
IDataErrorInfo是一个非常好的主意。该界面非常“协助”将信息传递给用户(视图)以查找背景错误(数据错误)。这正是 VM 的用途,将它放在那里是完全有效的。 Comments in this answer 和它下面的一个争论把它放在模型中。将它定义在另一个类中比模型和 VM 抽象也不会“错误”,但可能不值得。 -
..继续。如果您使用
IDataErrorInfo检查的逻辑如此复杂以至于您想重新使用它,那么我会将这些功能检查移到服务中,然后让VM 实现接口并在VM 使用该服务来访问复杂的验证逻辑。这样,您就可以重复使用和共享代码,并且每个 VM 只需自己实现IDataErrorInfo就可以保持干净和简单
标签: wpf validation mvvm idataerrorinfo