Xamarin。表单页正在合并在一起

Xamarin。表单页正在合并在一起,xamarin,navigation,xamarin.forms,Xamarin,Navigation,Xamarin.forms,当我导航到一个新页面,将其添加到堆栈中时,如果它不是页面的全高,它会显示该页面的一部分和前一页面的一部分(如模式)。我有一个Xamarin.Forms应用程序,它使用母版详细信息页面。我已经升级到Xamarin.Forms Nuget 2.3.3.168,并且使用Visual Studio的最新Xamarin版本 我在进入新页面时还检查了导航堆栈,所有内容看起来都是正确的。我有一个母版页,它是菜单,详细信息页有一个导航页,在堆栈中有更多的页面,它们只是部分显示在彼此的顶部 我唯一改变的另一件事是

当我导航到一个新页面,将其添加到堆栈中时,如果它不是页面的全高,它会显示该页面的一部分和前一页面的一部分(如模式)。我有一个Xamarin.Forms应用程序,它使用母版详细信息页面。我已经升级到Xamarin.Forms Nuget 2.3.3.168,并且使用Visual Studio的最新Xamarin版本

我在进入新页面时还检查了导航堆栈,所有内容看起来都是正确的。我有一个母版页,它是菜单,详细信息页有一个导航页,在堆栈中有更多的页面,它们只是部分显示在彼此的顶部

我唯一改变的另一件事是,当我需要通过将
MainPage
设置为新的
MasterDetail
页面来初始化我的
App()
构造函数时,因为如果我没有在Android的构造函数中这样做,它就会失败。有什么想法吗

这是我的App.cs:

   public App()
        {
            InitializeComponent();

            var masterDetailPage = new MasterDetailPage
            {
                Master = new Page() { Title = "Title" },
                Detail = new Page(),
                IsPresented = false
            };

            App.Current.MainPage = masterDetailPage;
        }
然后,当我确定用户是否登录时,我会使用以下功能重置master detail页面:

  public static void SetMainPage(Page newPage)
        {
            var rootPage = new NavigationPage(newPage) { BarBackgroundColor = Color.White};

            _nav.Initialize(rootPage);
            _dialogService.Initialize(rootPage);

            App.Current.MainPage = new MasterDetailPage
            {
               Master = new Menu(),
                Detail = rootPage,
                BindingContext = new MowMagicMobileViewModelBase(),
                IsPresented = false
            };
        }

然后从那里我调用Navigation
PushAsync()
将页面弹出到堆栈上。

哇,实际上我根本没有设置背景色。我想如果你没有明确地为页面设置它,它是透明的,除非它是从某个地方继承的?

我不知道这是否是解决方案,但我也有masterdetail页面。。 但我的页面是这样的

Master = new MenuPage();// it is a content page 
Detail = new NavigationPage(new HomePage());
试试看

如果你想改变背景,我就那样做了

public class NavigationPageBase:NavigationPage
{
    public NavigationPageBase (ContentPage c):base(c)
        {
            /*if (c.GetType().Equals(typeof(LoginPage)))
                SetHasNavigationBar(c, false);
            else
                SetHasNavigationBar(c, true);*/
            SetHasNavigationBar(c, true);
            BarBackgroundColor = Styles.toolbarColor;
            BackgroundColor = Styles.bgPageColor;
        }
}
对于detailpage,您可以使用它,例如

Detail = new NavigationPageBase (new HomePage ());
通过
App()
构造函数,您可以简单地

MainPage = new MyMasterDetailPage();

希望有帮助

我不明白你的问题?您可以添加有问题的代码吗?@Mr.Kocak添加了代码您是否将页面背景颜色设置为
color.Transparent
?这可能是最近的错误导致的:。它已在2.3.3 sr1中修复。