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

Uwp 如何使用MVVM从一个视图导航到另一个视图,uwp,uwp-xaml,Uwp,Uwp Xaml,我有两个场景可以从另一个视图调用一个视图,通常我们在Frame.Navigate(typeof(MainPage))后面编写代码来调用另一个页面,但我不知道如何使用MVVM来实现这一点 我在登录页面上,我想在点击按钮时调用MainPage,其操作显然在ViewModel中。所以我想从ViewModel导航到不同的视图 在主页上,我有左框和右框,我会把两个不同的页面。所以我想在一个页面的两个不同框架上浏览这两个页面 如果有人能告诉我它是如何工作的,用一个例子或一篇文章,将更有帮助。 谢谢。您正在使

我有两个场景可以从另一个视图调用一个视图,通常我们在Frame.Navigate(typeof(MainPage))后面编写代码来调用另一个页面,但我不知道如何使用MVVM来实现这一点

  • 我在登录页面上,我想在点击按钮时调用MainPage,其操作显然在ViewModel中。所以我想从ViewModel导航到不同的视图
  • 在主页上,我有左框和右框,我会把两个不同的页面。所以我想在一个页面的两个不同框架上浏览这两个页面
  • 如果有人能告诉我它是如何工作的,用一个例子或一篇文章,将更有帮助。
    谢谢。

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

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


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

    MVVM中的导航在上有很好的描述

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


    对于第二个请求,如果要导航到左侧或右侧框架中的视图模型,则可能需要一个自定义导航服务,在该服务中可以指定“目标”。这两个框架都有自己的导航历史记录,您需要分别管理它们。

    问题不在于通信,而在于MVVMLight的
    INavigationService
    。这不需要Messenger,它只会让您从一个VM向另一个VM发送数据变得更容易。用户没有指定使用哪个MVVM工具包,我希望是MvvmLightLibs!:-)MVVM模式对我来说是新的,我不知道应该使用哪个框架。我正在做一个关于通用Windows应用程序的项目,你能建议我使用哪个MVVM框架吗?我建议使用Galasoft MvvmlightLibs,但这是我的意见。它得到了WPF、UWP和Xamarin的良好支持。你可以在NuGet上找到它。