You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms问题:ToolbarItems显示在错误页面上

解决主页ToolbarItems在新页面仍显示的问题

我之前开发时也碰到过一模一样的情况,这大概率是导航逻辑或者页面Toolbar配置的问题,给你几个实用的解决思路:

1. 给新页面显式配置ToolbarItems

很多平台(比如Android)会默认沿用前一页的Toolbar配置,如果新页面没定义自己的ToolbarItems,就会出现旧按钮残留的情况。哪怕新页面不需要任何Toolbar按钮,也得显式声明一下:

XAML方式

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourApp.NewPage">
    <!-- 显式定义空的ToolbarItems,覆盖主页的配置 -->
    <ContentPage.ToolbarItems>
    </ContentPage.ToolbarItems>
    
    <!-- 页面内容 -->
</ContentPage>

代码后台方式

public NewPage()
{
    InitializeComponent();
    // 清空ToolbarItems,确保不会继承主页的按钮
    ToolbarItems.Clear();
    // 如果你需要新的按钮,在这里添加即可
    // ToolbarItems.Add(new ToolbarItem("操作", "icon.png", () => {}));
}

2. 检查导航方式是否正确

如果你用的是PushModalAsync打开模态页面,默认情况下模态页不会替换原页面的Toolbar,这时候就会看到主页的Toolbar还在。解决办法有两种:

  • 改用PushAsync导航(适合非模态的页面跳转);
  • 如果必须用模态页,在模态页的XAML里添加NavigationPage.HasNavigationBar="False",然后自己实现顶部栏,或者在打开模态页前暂时隐藏主页的ToolbarItems,关闭时再恢复:
// 打开模态页前隐藏主页Toolbar
MainPage.ToolbarItems.Clear();
await Navigation.PushModalAsync(new NewPage());

// 在模态页关闭时恢复(可以放在模态页的OnDisappearing方法里)
protected override void OnDisappearing()
{
    base.OnDisappearing();
    // 恢复主页的ToolbarItems
    var mainPage = Application.Current.MainPage as MainPage;
    mainPage?.RestoreToolbarItems();
}

3. 确保页面嵌套在NavigationPage中

如果你的主页不是通过NavigationPage包裹启动的,导航时Toolbar的上下文切换会出问题。检查App.xaml.cs的启动代码:

// 正确的方式:用NavigationPage包裹主页
MainPage = new NavigationPage(new MainPage());

// 错误的方式:直接设置主页为MainPage,会导致Toolbar导航异常
// MainPage = new MainPage();

4. 手动强制刷新Toolbar状态

如果以上方法都没效果,可以在新页面的OnAppearing方法里强制触发Toolbar更新:

protected override void OnAppearing()
{
    base.OnAppearing();
    // 强制启用当前页面的Toolbar,并清空原有配置
    NavigationPage.SetHasToolbar(this, true);
    ToolbarItems.Clear();
}

先从第一个方法试起,大部分情况都是新页面没显式配置Toolbar导致的,应该能解决你的问题。

内容的提问来源于stack exchange,提问作者Markus3D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:53:42