【问题标题】:[UWP][MVVMLight][Hamburger Menu]Navigation Service Limitations?[UWP][MVVMLight][汉堡菜单]导航服务限制?
【发布时间】:2018-06-05 14:18:07
【问题描述】:

我在我的 UWP 应用程序中使用 MVVMLight (v 5.4.1) 并希望实现经典的汉堡菜单,其中我的各种内容页面显示在主页内的框架中。然而,在实践中,我似乎没有任何方法可以告诉 MVVMLight 提供的 NavigationService 它应该使用主页中的 Frame 进行导航。从我在网上的研究来看,我似乎必须编写自己的 NavigationService(在此链接中定义:https://maximelabelle.wordpress.com/2017/01/19/implementing-viewmodel-based-navigation-in-your-universal-app/)。真的是这样吗?我真的必须编写自己的 NavigationService 还是我错过了一些明显的东西?

汉堡菜单肯定是最流行的app样式之一,难道MVVMLight真的不能完全支持吗?

【问题讨论】:

    标签: uwp navigation mvvm-light


    【解决方案1】:

    我真的必须编写自己的 NavigationService 还是我遗漏了一些明显的东西?

    MVVMLight 提供了NavigationService。您无需复制它。

    为了在 MVVM Light 中使用导航,您必须在 ViewModelLocator.cs 中注册和配置 INavigationService,为此您必须使用 PageKey 注册每个页面。

    public const string FirstPageKey = "FirstPage";  
    public const string SecondPageKey = "SecondPage";
    
    var nav = new NavigationService();
    nav.Configure(FirstPageKey, typeof(FirstPage));
    nav.Configure(SecondPageKey, typeof(SecondPage));
    

    【讨论】:

    • 嗨@NicoZhu,我阅读了博客链接,但只显示一个页面导航到另一个页面(并返回)。我特别希望我的主页中的一个框架成为我所有其他内容页面的主机。为此,我认为导航服务需要了解主页中的该框架(如我的问题中的链接所示)。似乎没有办法将该帧传递给导航服务。
    • 我知道你的手段。实际上,框架并没有留在主机MainPage 中。一般来说,我们需要在汉堡菜单架构中的MainPage 之前创建一个shell 作为主机。你可以使用 shell 的NavigationService 来导航另一个同样包含MainPage 的页面。你可以参考Template 10
    • 嗨@NicoZhu,非常感谢您的回复。根据我从您所说的内容中收集到的信息,我的应用程序应该有一个“shell”页面,该页面同时托管主页和后续内容页面。如果是这种情况,那么这不是我所读到的汉堡菜单实现(参见我的链接)。我认为创建自己的导航服务可能更容易,如我的链接所示。
    • 当然,您可以创建自己的导航服务。
    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多