Xamarin.forms Xamarin表单在详细信息页面中隐藏选项卡页面,但保留后退按钮

Xamarin.forms Xamarin表单在详细信息页面中隐藏选项卡页面,但保留后退按钮,xamarin.forms,Xamarin.forms,我有一个xamarin表单选项卡页面,第一页有一个列表视图。单击listview时,我希望能够隐藏选项卡(因为listview项目会将用户带到显示该项目详细信息的页面。这就是我只希望用户能够按“上一步”按钮返回选项卡页面的原因)。。。我如何做到这一点 到目前为止,我最接近它的是重新分配App.Current.MainPage ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) { App.Current.Ma

我有一个xamarin表单选项卡页面,第一页有一个列表视图。单击listview时,我希望能够隐藏选项卡(因为listview项目会将用户带到显示该项目详细信息的页面。这就是我只希望用户能够按“上一步”按钮返回选项卡页面的原因)。。。我如何做到这一点

到目前为止,我最接近它的是重新分配App.Current.MainPage

ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
 App.Current.MainPage= new NavigationPage(new MyNewPage());
}
但是,我丢失了“后退”按钮…如何创建“详细信息”页面、隐藏“详细信息”页面中的选项卡以及不丢失“后退”按钮?(在大多数流行的android应用程序中,这似乎非常普遍)

最好的例子来描述我正在尝试做什么是在三角洲的“飞三角洲”android应用程序。。在主屏幕上,有一个选项卡页面。当我单击“最近的活动”时,我会被发送到一个没有选项卡的详细信息页面,但详细信息页面有一个后退按钮。当我单击“后退”按钮时,它会将我送回选项卡页面


您必须为您的
选项卡页面创建一个自定义渲染器,类似于:

public class CustomTabbedPage : TabbedPage
{
        public static readonly BindableProperty TabBarHiddenProperty =
        BindableProperty.Create("TabBarHidden", typeof(bool), typeof(CustomTabbedPage), false);

        public bool TabBarHidden
        {
            get { return (bool)GetValue(TabBarHiddenProperty); }
            set { SetValue(TabBarHiddenProperty, value); }
        }
}

using System;
using yourAppName;
using yourAppName.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly:ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))]
namespace yourAppName.iOS
{
    public class CustomTabbedPageRenderer : TabbedRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            this.Tabbed.PropertyChanging += (sender, eventArgs) => {
                if (eventArgs.PropertyName == "TabBarHidden" && TabBar.SelectedItem == TabBar.Items[3])
                {
                    bool tabBarHidden = !tmp.TabBarHidden;
                    TabBar.Hidden = tabBarHidden;
                    Console.WriteLine(View.Frame.Width + " " + View.Frame.Height);

                // The solution to the space left behind the invisible tab bar
                    if(TabBar.Hidden)
                        View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 0);
                    else
                        View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 49);

                }
            };


        }
    }
}

对于Android,我使用以下命令:

不要切换主页。使主页成为导航页面,并在主页内添加选项卡式页面