具有“复合”视图的Silverlight MVVM建议

时间:2010-09-24 15:49:15

标签: silverlight mvvm

我有一个DomainView,允许您在我的域中选择一个实体。实体显示在DomainView中的EntityView中。

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

  • 实体,视图本身将其包装在EntityViewModel中并与之绑定?
  • 实体,在绑定上使用转换器在Entity和EntityViewModel之间进行转换?
  • 由DomainViewModel创建的EntityViewModel?

一切都会奏效,我只是想知道'MVVM-way'会是什么?我倾向于最后两个中的一个。

1 个答案:

答案 0 :(得分:1)

使用典型的“MVVM-way”,ViewModel不应该知道其他ViewModel,View和ViewModel之间的关系是1-1。

听起来你真正的问题是“如何在ViewModels之间传递数据”?一个共同的主/细节互动。

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

另一种选择是在两个ViewModel中注入一个公共服务(或模型,具体取决于你的风格)。该服务将提供一个公共属性,如CurrentEntity,由DomainViewModel根据需要设置。

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