我在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();
}
答案 0 :(得分:1)
首先,获取对您当前菜单页的引用
var md = (MasterDetailPage)Application.Current.MainPage;
var menu = (MenuPage)md.Master;
然后,调用您创建的任何公共方法来对其进行更新
menu.SetUserLogin();
答案 1 :(得分:0)
我会说这是用户界面问题,您很可能不需要登录页面上显示的汉堡菜单,因为我不知道任何应用程序都有该菜单。
但是在您需要的情况下,最简单甚至最干净的解决方案是拥有两个不同的主详细信息页面,并根据情况将它们分配到根目录。
隐藏主页面的部分并不是不可能的,但是正如@Jason所说的那样,这并不是一种普遍做法,我也不知道这样做的示例,尤其是您不使用MVVM和大多数Xamarin应用都是以这种方式完成的,您几乎都必须自己做,而他关于从哪里开始的建议是一个很好的建议。