我试图将这些工具栏添加到我的内容页中,如果它是导航堆栈的第一页,它就能工作。但是如果我用它作为第二个,我就不能得到任何菜单。如何使工具条项出现在IssuePage上而不让它成为我的起始页面?
public partial class IssuesPage : ContentPage
{
var home = new ToolbarItem
{
Text = "Add New",
Icon = "Add.png",
Order = ToolbarItemOrder.Primary,
Priority = 0,
};
home.Clicked += this.OnClickNewIssue;
this.ToolbarItems.Add(home);
var map = new ToolbarItem
{
Text = "Map",
Icon = "map.png",
Order = ToolbarItemOrder.Primary,
Priority = 0,
};
map.Clicked += this.OnClickShowMap;
this.ToolbarItems.Add(map);
var loginLocation = new ToolbarItem
{
Text = "Login and Location",
Icon = "menu.png",
Order = ToolbarItemOrder.Secondary,
Priority = 0,
};
loginLocation.Clicked += this.OnClickLoginLocation;
this.ToolbarItems.Add(loginLocation);
var filter = new ToolbarItem
{
Text = "Filter and Sorting",
Icon = "filter.png",
Order = ToolbarItemOrder.Secondary,
Priority = 1,
};
filter.Clicked += this.OnClickSetFilter;
this.ToolbarItems.Add(filter);
}下面是稍后的页面顺序。
public App()
{
Client = new AppIssueClient();
// The root page of your application
MainPage = GetMainPage();
}
public static Page GetMainPage()
{
return new NavigationPage(new IssueCarouselPage(new UIIssueVM(true)));
}这就是我如何从IssuePage IssueCarosuelPage
void OnGoToEventList(object sender, EventArgs args)
{
Navigation.PushModalAsync(new IssuesPage(-1));
}发布于 2018-01-11 15:25:23
原因是使用PushModalAsync,您将在堆栈上推送一个全新的页面,这不仅取代了IssueCarouselPage,甚至取代了包装它的NavigationPage。正因为如此,您将失去工具栏功能。若要解决此问题,请执行以下操作:
void OnGoToEventList(object sender, EventArgs args)
{
Navigation.PushModalAsync(new NavigationPage(new IssuesPage(-1)));
}现在,您将在堆栈上推送一个新的导航页,其中包含新的IssuesPage,导航页将提供工具栏。或者,您可以只使用PushAsync进行分层导航:
void OnGoToEventList(object sender, EventArgs args)
{
Navigation.PushAsync(new IssuesPage(-1));
}您应该使用哪一个取决于您的特定用例。在这篇博客文章中,这两种导航形式都有很好的比较。
https://stackoverflow.com/questions/48209186
复制相似问题