当前位置:  开发笔记 > 编程语言 > 正文

在MV-VM中使用IDataErrorInfo

如何解决《在MV-VM中使用IDataErrorInfo》经验,为你挑选了2个好方法。

如果我的域对象实现了IDataErrorInfo,并且我使用的是MV-VM,那么如何通过ViewModel将错误传播到View?如果我直接绑定到模型,我会在绑定时将"ValidateOnExceptons"和"ValidateOnErrors"属性设置为true.但是我的ViewModel没有实现IDataErrorInfo.只有我的模特.我该怎么办?

澄清 我正在处理在域对象中实现IDataErrorInfo的现有代码库.我不能在我的视图模型中实现IDataErrorInfo.



1> MarioH..:

您可以在VM中另外实现IDataErrorInfo,并将对VM的调用路由到相应的域对象.我认为这是将域对象直接暴露给视图的唯一方法.



2> gcores..:

如果您使用的是MV-VM,ViewModel应该定义IDataErrorInfo接口,而不是模型.

您可以说IDataErrorInfo接口仅适用于视图,并且它不属于模型,但这是样式问题.

让ViewModel实现IDataErrorInfo接口并从模型传播错误将是最简单的答案.


@Pat我不确定我同意这一点.该模型不应受到UI问题的污染.在模型中实现几个接口只是为了让UI感觉愉快感觉不对,这就是ViewModel的用途.然后,这一切都取决于模型的复杂性,项目的大小和类型等.我认为没有一个真正的答案.但我会尽量保持模型清除业务逻辑之外的任何问题.
这个答案与MS的最佳实践相矛盾(http://msdn.microsoft.com/en-us/library/gg405484(v=PandP.40).aspx):通常,该模型实现了易于绑定到的设施风景.这通常意味着它通过INotifyPropertyChanged和INotifyCollectionChanged接口支持属性和集合更改通知.该模型还可以通过IDataErrorInfo(或INotifyDataErrorInfo)接口支持数据验证和错误报告.这些接口允许在值更改时通知WPF和Silverlight数据绑定,以便可以更新UI
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有