如何使用MVVM从一个视图导航到另一个视图

时间:2016-07-21 06:44:04

标签: uwp uwp-xaml

我有两个场景可以从另一个View调用一个View,通常我们在Frame.Navigate(typeof(MainPage))后面编写代码来调用其他页面,但我不知道如何使用MVVM来做这个。 / p>

  1. 我在登录页面上,我想在按钮上调用MainPage,其操作显然在ViewModel中。所以从ViewModel我想导航到不同的View。
  2. 在MainPage上我已经离开了框架和右框架,我将放置两个不同的页面。所以我想在一页中的两个不同的框架上浏览这两个页面。
  3. 如果有人能告诉我它是如何工作的,那么使用一个例子或文章会更有帮助。 感谢。

2 个答案:

答案 0 :(得分:2)

例如,在MVVM Light framework blog

中详细描述了MVVM中的导航

通常最好使用现有的MVVM框架,该框架已经提供了一个导航服务,可以轻松地用于引导导航而无需手动操作。

对于第二个请求 - 必须有不同的导航框架,您可能需要有一个自定义导航服务,您可以在其中指定“目标” - 如果您想要导航到左侧的视图模型或右框架。然后,两个框架都将拥有自己的导航历史记录,您需要单独管理它们。

答案 1 :(得分:1)

您使用的是哪个MVVM框架?如果您使用的是Galasoft MvvmLightLibs,则需要使用Messenger.Default.Register和Messenger.Default.Send。

https://msdn.microsoft.com/it-it/magazine/jj694937.aspx

从viewmodel中,您可以发送一条消息(您的自定义类),其中包含导航所需的所有信息(例如,目标页面和相关参数)。在发送消息之前,您需要注册消息:在此位置指定在特定消息重新发送时运行的方法。

通过这种方式,您可以轻松地从视图模型到应用程序的UI层进行通信。