我参考了this StackOverflow问题,关于MVVM Light:
我想尝试一个汉堡菜单样式导航(见这个 样品)。应用程序由Microsoft提供有关如何执行此操作的示例):
1-在我的所有页面中共享一个方便的解决方案。例子 上面提到的使用AppShell页面作为应用程序的根目录 一个框架,它封装了导航菜单和一些行为 后退按钮。那将是理想的。
2-使用MVVM-Light导航服务处理所有导航 从我的视图模型很方便。
以下是App.xml.Cs如何初始化shell页面onLaunched:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
var shell = Window.Current.Content as AppShell;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (shell == null)
{
// Create a AppShell to act as the navigation context and navigate to the first page
shell = new AppShell();
// Set the default language
shell.Language = ApplicationLanguages.Languages[0];
shell.AppFrame.NavigationFailed += OnNavigationFailed;
}
// Place our app shell in the current Window
Window.Current.Content = shell;
if (shell.AppFrame.Content == null)
{
// When the navigation stack isn't restored, navigate to the first page
// suppressing the initial entrance animation.
var setup = new Setup(shell.AppFrame);
setup.Initialize();
var start = Mvx.Resolve<IMvxAppStart>();
start.Start();
}
// Ensure the current window is active
Window.Current.Activate();
}
问题是,只要我浏览AppShell提供的菜单,一切正常。但是MVVM Cross的ShowViewModel没有任何效果。 如果将shell作为Frame或AppShell上设置的框架传递,我认为不应该有任何区别。 有没有人知道我能做些什么,或者是否有一个带有MVVM交叉的工作汉堡菜单的例子?
如果您需要更好的概述,那么存储库在GitHub上是开源的。
https://github.com/Apply-Solutions/MoneyManager
我使用MVVM Cross v4.0.0.0-beta1。 Beta2目前还有另一个阻止在UWP中构建的问题。
由于 NPadrutt
答案 0 :(得分:0)
不完全确定您要做什么,但是您可能需要使用MvvmCross作为框架在UWP应用中使用汉堡包菜单导航页面,是一个自定义演示者,它处理ShowViewModel
方法,并在汉堡包容器视图中显示所请求的ViewModel的关联视图。
答案 1 :(得分:0)
编辑:为了使用应用程序外壳中的导航,这些页面必须是Pages。因此,您可能需要重写Appshell中的导航,或者可能无法将所有页面调整为MvxPage。