从ViewModel调用导航到另一个页面是正确的吗?

时间:2011-03-04 10:42:05

标签: silverlight mvvm

我知道有很多方法可以从ViewModel导航到其他页面。

我不确定这是不是一个好主意,因为MVVM的目的是将View与ViewModel分开,但导航到ViewModel中的其他页面意味着View和ViewModel之间存在一对,如果我更改View name,我还需要在ViewModel中更改URI(字符串)。

我想知道,从ViewModel调用Navigate到其他页面是否正确?如果它错了,导航到其他页面的正确(或更好)方法是什么?

2 个答案:

答案 0 :(得分:0)

为什么不创建一个能够保持导航逻辑的单独类?在这种情况下,您只需要从ViewModel发送一条消息,该程序应该更改View,并且细节将由仲裁决定。使用该方法,您仍然无法在View和VM之间建立直接连接

答案 1 :(得分:0)

这既正确又自然。

当您发出导航请求时,您作为Uri的一部分提供的“名称”是您的View类已在容器中注册的名称。由于使用容器注册类是由模块本身而不是View或ViewModel完成的,因此您不会在View和ViewModel之间引入耦合。

也就是说,如果你想自定义Prism解释导航请求的方式,你总是可以写一个实现IRegionNavigationContentLoader的类。如果将其注册到容器中,Prism将解析您自己的类而不是内置的RegionNavigationContentLoader。但这并不是世界上最简单的事情。