2010-09-24 35 views
0

我有一个DomainView,允许您选择我的域中的实体。该实体显示在DomainView中的EntityView中。Silverlight MVVM建议与'复合'视图

我的问题是'DomainViewModel'属性应该绑定到EntityView?

  • 该实体,与视图本身包装它在一个EntityViewModel,它绑定到那?
  • 实体,在绑定上使用Converter来在Entity和EntityViewModel之间进行转换?
  • 一个EntityViewModel,由DomainViewModel创建?

所有的工作,我只是想知道'MVVM的方式'是什么?我最喜欢的是最后两个之一。

回答

1

与典型的“MVVM路”,不是的ViewModels应该知道其他的ViewModels和视图和视图模型之间的关系是1-1。

听起来像你真正的问题是“我如何在ViewModels之间传递数据”?常见的主/细节交互。

您是否在使用任何框架?我个人对PRISM更为熟悉,但MVVM Light和其他概念类似。在PRISM中,一个好的解决方案是EventAggregator。 DomainViewModel发布EntityViewModel订阅的“EntitySelected”聚合事件。

另一种方法是在两个ViewModels中注入一个通用服务(或模型,取决于您的样式)。该服务将提供像CurrentEntity这样的公共属性,根据需要由DomainViewModel设置。

要么提供一种在ViewModel之间传递数据的机制,而不需要那些相互依赖的ViewModel。

+0

谢谢 - 目前,我没有使用框架,只是Silverlight 4.0。 MVVM作为一种实践对我来说还是比较新的 - 即使我一直在这样做了一段时间 - 我还没有意识到它是MVVM!我会调查你的想法,但如果任何人有任何其他建议,请让我知道。 – 2010-09-27 10:57:09