我有一个应用程序使用MVVM模式,我想在用户填写信息时实现验证。我想使用IDataErrorInfo,但我不知道我的视图模型是否实现该接口是一个好主意,还是更好地创建一个新类。怎样才是在MVVM模式下使用IDataErrorInfo来实现验证的最佳方法?
编辑:我看到一些示例中的实现位于模型中(不同于视图模型),但在我的情况下,模型基本上是从我的数据库创建的POCO实体,当我使用Entity Framework创建我的edmx模型时,因此我想避免修改这些实体,因为如果我不更新我的模型,我将不得不再次进行这项工作。
谢谢。
编辑:我看到一些示例中的实现位于模型中(不同于视图模型),但在我的情况下,模型基本上是从我的数据库创建的POCO实体,当我使用Entity Framework创建我的edmx模型时,因此我想避免修改这些实体,因为如果我不更新我的模型,我将不得不再次进行这项工作。
谢谢。
IDataErrorInfo
是一个非常好的想法。这个接口可以很好地“协助”将后台错误(数据错误)信息传递给用户(视图)。这正是VM的作用,让它在那里是完全有效的。此答案中的评论和下面的评论主张在Model中使用它。虽然将其定义在另一个类中而不是Model和VM中可能也并没有“错”,但有可能并不值得这样做。 - VivIDataErrorInfo
进行检查的内容是非常复杂的逻辑,并且您想要重复使用它,那么我会将这些功能检查字面上转移到服务中,然后在 VM 中实现该接口并使用该服务访问复杂的验证逻辑。这样一来,您就可以实现代码重用和共享,同时每个 VM 只需自己实现IDataErrorInfo
,保持代码整洁简单。 - Viv