gpt4 book ai didi

xamarin - 使用 Xamarin Forms 在每个页面上显示不同的工具栏按钮

转载 作者:行者123 更新时间:2023-12-05 01:02:31 24 4
gpt4 key购买 nike

我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com