【发布时间】:2012-09-17 11:32:56
【问题描述】:
我正在使用 MVVM,我想使用 IDataErrorInfo 来验证我的视图。
我当前的实现包括嵌套对象和不同的 ViewModel。例如业务实体“客户”包含业务实体“地址”。我在我的视图中直接访问地址,例如“Customer.Address”。要验证 Address 中的更改,我必须在 Address 中实现 IDataErrorInfo。
我在不同的视图/视图模型中使用客户或地址。在不同的视图/视图模型中使用会导致不同的验证行为。因此,在实体本身中实现验证是不够的。
在 ViewModel 中直接公开我想要更改的属性(创建直接设置/获取实体的新属性)似乎使 ViewModel 过于僵化。而且太大了。
我不能从基类继承,因为一些业务实体已经从其他对象派生(这是我无法改变的事实)。 我目前看到的唯一选择是将 ViewModel 的接口添加到业务实体,并将业务实体中的 this[] 调用转发到该 ViewModel 接口。
是否有关于如何在 ViewModel 中验证这些嵌套对象的最佳实践?
编辑:验证我不认为业务对象中的验证是一个有用的想法的另一个原因是,我需要在我的 ViewModel 中使用不同的业务对象来验证视图和数据条目。
【问题讨论】:
标签: c# mvvm idataerrorinfo