Xamarin 从选项卡页导航到内容页

Xamarin 从选项卡页导航到内容页,xamarin,navigation,xamarin.forms,Xamarin,Navigation,Xamarin.forms,我有一个有三个标签的标签页,这是我的主页。在其中一个选项卡中,我有一个ListView,单击ListView中的项目,我想导航到一个新页面 我可以导航到新页面,但该页面显示在选项卡中。我不希望页面位于选项卡内,应该打开一个新页面,占据整个屏幕 这是其中一个选项卡中的我的listView itemSelected方法 如何使DocketDetail页面占据整个屏幕 我已经试着让它成为“主页”,这 App.Current.MainPage = new NavigationPage(new Docke

我有一个有三个标签的标签页,这是我的主页。在其中一个选项卡中,我有一个ListView,单击ListView中的项目,我想导航到一个新页面

我可以导航到新页面,但该页面显示在选项卡中。我不希望页面位于选项卡内,应该打开一个新页面,占据整个屏幕

这是其中一个选项卡中的我的listView itemSelected方法

如何使DocketDetail页面占据整个屏幕

我已经试着让它成为“主页”,这

App.Current.MainPage = new NavigationPage(new DocketDetail());
但这样做,我不能回到标签页

请建议

  lvLiveDockets.ItemSelected += (object sender, SelectedItemChangedEventArgs e) =>
            {
                if (e.SelectedItem == null)
                {
                    DisplayAlert("Item DeSelected", e.SelectedItem.ToString(), "Ok");
                    return; //ItemSelected is called on deselection, which results in SelectedItem being set to null
                }
                else
                {
                    DisplayAlert("Item Selected", e.SelectedItem.ToString(), "Ok");
                    this.Navigation.PushAsync(new DocketDetail());
                }

                //((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state.
            };
我的App.Xaml.cs

  MainPage = new TabbedPage
            {
                Children =
                {
                    new NavigationPage(new PendingDockets())
                    {
                        Title = "Pending Dockets",
                        Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                    },
                    new NavigationPage(new LiveDockets())
                    {
                        Title = "Live Dockets",
                        Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                    },
                    new NavigationPage(new ArchiveDockets())
                    {
                        Title = "Archive Dockets",
                        Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                    },
                }
            };`
MainPage=新选项卡页
{
孩子们=
{
新导航页面(新的PendingDockets())
{
Title=“待决摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
新建导航页面(新建LiveDockets())
{
Title=“实时摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
新导航页面(新ArchiveDockets())
{
Title=“存档摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
}
};`

您必须将选项卡页面放入导航堆栈中(我认为是根页面)

当您在listview中选择yout项时,您应该推送一个新页面

Navigation.PushAsync(new DocketDetail());
我希望能理解你的问题

  lvLiveDockets.ItemSelected += (object sender, SelectedItemChangedEventArgs e) =>
            {
                if (e.SelectedItem == null)
                {
                    DisplayAlert("Item DeSelected", e.SelectedItem.ToString(), "Ok");
                    return; //ItemSelected is called on deselection, which results in SelectedItem being set to null
                }
                else
                {
                    DisplayAlert("Item Selected", e.SelectedItem.ToString(), "Ok");
                    Application.Current.MainPage = new DocketDetail();
                }

                //((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state.
            };

您的
App.cs
可以更改为:

MainPage = new NavigationPage(new TabbedPage()
        {
            Children =
            {
                new PendingDockets()
                {
                    Title = "Pending Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
                new LiveDockets()
                {
                    Title = "Live Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
                new ArchiveDockets()
                {
                    Title = "Archive Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
            }
        });
MainPage=新导航页(新选项卡页()
{
孩子们=
{
新的待处理摘要()
{
Title=“待决摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
新的LiveDockets()
{
Title=“实时摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
新ArchiveDockets()
{
Title=“存档摘要”,
Icon=Device.OnPlatform(“tab_about.png”,null,null)
},
}
});

您好,我已经更新了我的问题,我的App.xaml.cs在TabbedPage设置为MainPage时的外观。我如何将其更改为您建议的内容。嗨,我已经这样做了,我可以导航到DocketDetails页面。但在顶部导航栏的页面上,我没有返回到上一个视图的返回箭头,因为它是一个新页面。@Alessandro是正确的,但我可以告诉您如何将其放入代码中。基本上,主页应该是一个包含选项卡页的导航页面。TabbedPage的子项应该是没有单独导航页面的不同ContentPages我刚刚尝试在App.xaml'MainPage=new NavigationPage(new TabbedPage{children={'并运行它,仅当我使用'App.Current.MainPage=new NavigationPage(new DocketDetail());时,它才会在选项卡内显示DocketDetail页面;它会进入一个没有选项卡的全新屏幕
MainPage = new NavigationPage(new TabbedPage()
        {
            Children =
            {
                new PendingDockets()
                {
                    Title = "Pending Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
                new LiveDockets()
                {
                    Title = "Live Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
                new ArchiveDockets()
                {
                    Title = "Archive Dockets",
                    Icon = Device.OnPlatform<string>("tab_about.png",null,null)
                },
            }
        });