MVVM,WPF和验证

Joe*_*Joe 6 .net c# wpf mvvm

好吧,我认为我对MVVM有相当好的理解.但我需要一些澄清.

ViewModel是否负责调用相应的服务来保留模型信息?

如果是这样,那么ViewModel必须有一种干净的方法来确定它所拥有的数据是否有效.如果数据有效,它将相应地更新模型.最后,给定新更新的模型,将调用持久化模型的服务.那么问题是:我们如何验证ViewModel的信息并在View中轻松显示?

我已经看到了一些不同的验证方法.一个建议使用IDataErrorInfo,我认为是绝对令人作呕的.

另一个是将ValidationRule添加到Binding.ValidationRules.但是,使用这种方法不能在模型的整体环境中运行.ValidationRule对象只能对单个值执行验证.一个示例可能是确保值是整数或在特定范围内.

我刚开始研究的另一个想法是使用BindingGroup.但是我现在还不太了解这一点,因为我还在阅读它.

我希望能够在一个地方执行验证逻辑,供View和ViewModel使用.除了这个要求之外,我希望能够对ViewModel中的任何其他值执行验证.此外,如果ViewModel是无效状态,则能够阻止ViewModel持久化数据.这需要在View中轻松反映出来.

如果有人能指出我的一些文章或提供一些洞察我想要的方法,我将非常感激.

Ara*_*and 2

我们在业务模型中进行数据验证,并且仅在业务模型允许时才允许保存(因为它具有有效数据),事后看来,我们可以在视图模型中完成此操作,但这意味着每个视图模型都有不同的验证方法。如果您以不同的方式显示相同的数据两次,您可能必须重新编写验证逻辑。

我们对业务层中的几乎每个字段都执行 isdirty 和 isValid 操作,我们编写自己的自定义字段对象和实现此功能的自定义外部引用对象。然后我们可以将 staraight 绑定到这些属性,以直观地查看我们是否有效/脏等。然后我们通过视图模型传播这些属性。

  • 您有一些库可以帮助您,例如验证应用程序块(http://msdn.microsoft.com/en-us/library/cc309509.aspx)和CSLA(http://www.lhotka.net/cslanet/) ) (2认同)