将视图模型用作转换器是个好主意吗?

时间:2013-05-15 17:26:48

标签: mvvm converter ivalueconverter

我已阅读此文:

https://groups.google.com/forum/?fromgroups=#!topic/wpf-disciples/P-JwzRB_GE8

这个模型是否有责任转换数据类型?如果视图模型不了解视图,为什么要使用不同格式的属性来供视图使用?

如果我至少使用转换器,我需要使用转换器并对其进行编码,但是在这种情况下视图模型对视图一无所知,我认为使用转换器更好,但也许是一个很好的选择使用视图模型为转换器?

感谢。

1 个答案:

答案 0 :(得分:1)

  

模型是否有责任转换数据类型?

没有。这就是为什么该链建议使用ViewModel而不是Model来转换数据格式。

  

如果视图模型不了解视图,为什么视图会使用不同格式的属性?

这就是保罗·斯托维尔和比尔·肯普夫在这一链条中提出的反对意见的论点。如果你想保持对MVVM的“纯粹”,一般来说,最好是构建一个转换器,它将逻辑完全保留在表示层(View)中。

话虽如此,这里通常会考虑一个实用性问题/平衡 - 如果有一个场景,你只会一次使用这种“转换”,那么只需暴露正确类型的数据就更简单了ViewModel,即使它有效地添加了少量的耦合,因为它的代码要少得多。如果数据转换是可以重复使用的,那么转换器(在我看来)更合适。