繁体   English   中英

Xamarin Forms MasterDetailPage动态更改母版

[英]Xamarin Forms MasterDetailPage dynamically change master

我在Xamarin应用程序中使用默认的MasterDetailPage导航,其中master是侧面导航,而detail是用户可以导航到的内容页面。

我已经将代码添加到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();
        } 

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

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

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

menu.SetUserLogin();

我会说这是用户界面问题,您很可能不需要登录页面上显示的汉堡菜单,因为我不知道任何应用程序都具有该功能。

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

隐藏主页面的部分并不是不可能的,但是正如@Jason所说,这样做并不是一种普遍做法,我也不知道这样做的示例,尤其是您不使用MVVM和大多数Xamarin应用如果这样做的话,您将主要需要自己做,而他关于从何处开始的建议是一个很好的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM