我的 Xamarin Forms 应用中有 2 页。我的第一页在工具栏中有 4 个图标。我的第二个页面是一个登录页面,工具栏中有一个勾号和一个叉号。
除非我将其设为导航页面,否则我无法让登录页面显示任何图标。我还必须在调用 PushAsync() 之前清除第一页上的 ToolBarItems,否则它会提示工具栏项目太多。
如果我在登录页面上调用 PopAsync(),它不会返回到第一页。我猜这是因为它们是 2 个导航页面。我也试过 PopToRootAsync()。但是后退按钮有效。
我的问题是 - 如何以允许导航工作的方式在 2 个不同页面上显示不同的工具栏图标?
我正在 Windows Phone 8.0 上测试这个
这是调用登录页面的代码:
private async void ShowLoginPage()
{
ToolbarItems.Clear();
var page = new NavigationPage(new LoginPage());
await Navigation.PushAsync(page);
}
这是返回第一页的代码:
private void Cancel()
{
Navigation.PopToRootAsync();
}
我正在运行 Xamarin.Forms v1.2.2.6243
最佳答案
您可以尝试的一件事是将您的登录页面保留在 NavigationPage
内。 ,然后而不是运行 PopAsync()
成功登录后,在登录页面中,只需替换 MainPage
使用您的旧导航页面:
在您的 App 类中:
public NavigationPage AppNavPage = new NavigationPage(new FirstPage());
public App() {
MainPage = AppNavPage;
}
在您的首页:
private async void ShowLoginPage() {
ToolbarItems.Clear();
var page = new NavigationPage(new LoginPage());
await Navigation.PushAsync(page);
}
在登录页面:
private async void OnCreateClicked(object sender, EventArgs e) {
bool loginInfoIsGood = CheckLoginInfo(); //Check their login info
if(loginInfoIsGood) {
Application.Current.MainPage = App.AppNavPage;
}
}
否则,我还为
NavigationRenderer
做了一个自定义渲染器在 iOS 上将工具栏项目插入到导航栏的右侧并覆盖了一些 Menu
Android 上的相关内容以更改图标文本/颜色。
关于xamarin - 使用 Xamarin Forms 在每个页面上显示不同的工具栏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26132500/