我在xamarin.forms工作。我正在创建一个Android应用程序。在我的应用程序中,我必须使用菜单。所以我拿了Master详细页面来显示菜单。它的工作正常。
但我的问题是在显示Master详细信息页面之前,我必须打开一个不包含菜单的内容页面。所以我拿了一个内容页面进行设置。但是当我在内容页面之后运行应用程序时,主页详细信息页面没有出现。代码运行成功但主页面没有出现。
任何人都可以告诉我如何在显示简单的内容页面后显示主详细信息页面吗?
答案 0 :(得分:2)
答案取决于您是否要维护导航堆栈。如果您想将新页面添加到当前导航堆栈,那么您需要在内容页面中添加如下内容:
((NavigationPage)Parent).PushAsync(newPage);
如果您想将新页面作为导航堆栈的根目录,那么您需要执行以下操作:
((App) Parent).MainPage = newPage;
如果这不起作用,请发布您的代码。
答案 1 :(得分:0)
给你一招!假设你有一个登录页面,在认证之后你将转到RootPage这是一个masterDetailPage。
从下面的代码
中获取提示namespace LoginNavigation
{
public class App : Application, IloginInterface
{
public static App current;
public static bool IsUserLoggedIn { get; set; }
public static double ScreenWidth;
public static double ScreenHeight;
public App () {
current = this;
MainPage = new LoginPageWithStack ();
}
public void Logout() {
MainPage = new LoginPageWithStack ();
}
public void ShowMainPage() {
MainPage = new RootPage ();
}
}
}
rootPage:
namespace LoginNavigation
{
public class RootPage:MasterDetailPage
{
MenuPage menuPage;
public RootPage () {
ToolbarItems.Add(new ToolbarItem("Filter", "ring.png", async () => {
var page = new ContentPage();
var result = await page.DisplayAlert("Title", "Message", "Accept", "Cancel");
Debug.WriteLine("success: {0}", result);
}));
menuPage = new MenuPage ();
menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItemForMaster);
//Master = new MasterMenu();
Master = menuPage;
Detail = new NavigationPage (new TimeSheet()){
BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor = Color.FromHex("008dce")
};
}
void NavigateTo (MenuItemForMaster menu) {
if (menu == null)
return;
Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
//Detail = displayPage;
Detail = new NavigationPage (displayPage) { BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor = Color.FromHex("008dce")};
menuPage.Menu.SelectedItem = null;
IsPresented = false;
}
}
}
所以诀窍是,获取App类的当前实例并操纵它的Mainpage属性。