Xamarin Forms MasterDetailPage动态更改master

问题描述 投票:0回答:2

我在我的Xamarin应用程序中使用默认的MasterDetailPage导航,其中master是侧面导航,详细信息是用户可以导航到的contentpages。

我已经将代码添加到MenuPage

public MenuPage()
        {
            InitializeComponent();


            if (ProfilPage.loggedin)
            {
                ucet_stack.IsVisible = true;
                ucet.IsVisible = true;
                ucet.Text = "Váš účet " + ProfilPage.meno;
            }
            else
            {
                ucet_stack.IsVisible = false;
                ucet.IsVisible = false;
            }
        }

我希望在用户登录后更改MenuPage的内容。构造函数仅在第一次被调用,因此它永远不会更改。我试图在onAppearing中使用相同的代码,但也没有工作。那么在用户登录后我可以用什么来动态更改菜单?注意我对此很新。

更新:

我用新的MenuPage创建了第二个MasterDetailPage,并尝试在详细的内容页面中更改它,但它变成了空白

 if(ProfilPage.loggedin)
        {
            Application.Current.MainPage = new MainLoggedPage();
        } 
c# xamarin.forms master-detail
2个回答
1
投票

首先,获取对当前MenuPage的引用

var md = (MasterDetailPage)Application.Current.MainPage;
var menu = (MenuPage)md.Master;

然后,调用您创建的任何公共方法来更新它

menu.SetUserLogin();

0
投票

我会说这是用户界面问题,你很可能不需要登录页面上显示的汉堡菜单,因为我不知道任何应用确实有这个。

但是在您需要它的情况下,最简单甚至最干净的解决方案是拥有两个不同的主详细信息页面,并根据情况将它们分配给根目录。

隐藏主页的部分并非不可能,但正如@Jason所说,这不是一般做法,我不知道这方面的例子,特别是你不使用MVVM和大多数Xamarin应用程序这样做,你大部分时间都要自己做,他对从哪里开始的建议很好。

© www.soinside.com 2019 - 2024. All rights reserved.