【发布时间】:2010-05-14 19:33:07
【问题描述】:
我见过很多 MVVM 的例子。我可以看到视图应该引用 ViewModel。我最近看到了一个 ViewModel 引用 View 的示例,这对我来说似乎是错误的,因为它会导致更紧密的耦合。鉴于 ViewModel 通常被描述为 View 和 Model 之间的中介,那么 ViewModel 是否比域对象的外观更多?我希望我在这里正确使用了“门面”这个词。
【问题讨论】:
标签: wpf design-patterns mvvm
我见过很多 MVVM 的例子。我可以看到视图应该引用 ViewModel。我最近看到了一个 ViewModel 引用 View 的示例,这对我来说似乎是错误的,因为它会导致更紧密的耦合。鉴于 ViewModel 通常被描述为 View 和 Model 之间的中介,那么 ViewModel 是否比域对象的外观更多?我希望我在这里正确使用了“门面”这个词。
【问题讨论】:
标签: wpf design-patterns mvvm
你的直觉是对的; ViewModel 不应引用 View。
请注意,这是“应该”。纯粹主义者说 ViewModel 甚至不应该引用诸如the Visibility enumeration 之类的 WPF 内容,但我不同意。除其他外,ViewModel 应该可以帮助您分离关注点并提高代码的可读性。如果您必须跳过障碍来避免引用属于 View 的内容,这表明您可能做得过火了。
【讨论】:
从技术上讲,视图模型应该引用模型,而不是视图。视图应该绑定到视图模型,并且视图模型应该公开方便的属性,以便使用模型中的数据进行绑定。
显然,视图模型的复杂性取决于应用程序和模型中的数据。但将其视为“门面”并不是非常有害的(尽管在开发人员术语中并不完全正确)。
【讨论】: