Xamarin形成MasterDetailPage导航用例

时间:2019-12-02 15:34:41

标签: c# xamarin xamarin.forms navigation prism

这是我的情况:

我的应用程序首先打开MasterDetailPageMasterStackLayout中的Button,仅打开特定的DetailPage。您可以通过菜单将其视为某种视频库...

我希望提供汉堡菜单,以便用户可以随时访问主菜单并在视频之间切换。

我正在使用Prism 7.2,因此在App.xaml.cs文件中以这种方式设置了第一个导航:

await NavigationService.NavigateAsync("MasterPage/NavigationPage/MainPage");

但是,我想避免点击特定页面后返回导航的可能性。对我来说,在这种情况下,用户以这种方式回到Master毫无意义。他应该使用汉堡菜单。因此,在这种情况下,当点击“后退”按钮时,该应用程序应退出。为此,我想到了在导航到DetailPage时重写整个堆栈的方法:

// Where page parameter is like "MasterPage/NavigationPage/VideoPage?...."
private async Task NavigateCommandAsync(string page)
{
    await NavigationService.NavigateAsync("myapp:///" + page);


    // Some of the things I've tried...
    //await NavigationService.GoBackAsync();
    //await NavigationService.NavigateAsync(page);

    //await NavigationService.NavigateAsync(new Uri(page, UriKind.Relative));
}

至少,以这种方式,当用户单击“后退”按钮时,它只是退出了我想要的应用程序。

到目前为止,行为举止还不错。除了在显示任何DetailView之前我开始注意到白纸装箱。最后,我清楚地了解到显示的导航页面小于1s。但这从用户体验的角度来看很烦人。另外,我还可以更改此页面的BackgroundColor,使它看起来不太难看,但仍然不是最佳选择...

现在,我已经尝试过许多推动DetailPage的操作,但是行为显然不一样。到目前为止,我已经了解了,无论如何,我都需要将详细信息页面包装在NavigationPage中,以获取汉堡包菜单。但是随后,这个NavigationPage变得四处都是。如果删除它,我将失去汉堡菜单。

在使用MasterDetailPage的情况下,是否有任何可能的解决方法?或对我在做什么错或被误解的任何想法?

0 个答案:

没有答案