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

如何在特定子页面隐藏或移除Shell的ToolbarItems?

解决Shell全局二级ToolbarItem在特定页面隐藏的问题

方法一:通过标记控制可见性(推荐)

给全局定义的ToolbarItem添加统一标识,在目标页面的生命周期方法中切换可见状态,避免永久移除。

步骤1:修改AppShell中的ToolbarItem

给需要全局控制的二级ToolbarItem添加Tag属性,用于区分全局项:

<Shell
    ...
>
    <Shell.ToolbarItems>
        <ToolbarItem Text="Test1" Order="Secondary" Priority="0" Tag="GlobalSecondary" />
        <ToolbarItem Text="Test2" Order="Secondary" Tag="GlobalSecondary" />
        <ToolbarItem Text="Test4" Order="Secondary" Tag="GlobalSecondary" />
    </Shell.ToolbarItems>
    ...
</Shell>

步骤2:在目标页面中切换可见性

在需要隐藏全局ToolbarItem的页面,重写生命周期方法,分别处理隐藏和恢复逻辑:

protected override void OnAppearing()
{
    base.OnAppearing();
    // 隐藏标记为GlobalSecondary的全局ToolbarItem
    foreach (var toolbarItem in Shell.Current.ToolbarItems)
    {
        if (toolbarItem.Tag?.ToString() == "GlobalSecondary")
        {
            toolbarItem.IsVisible = false;
        }
    }
}

protected override void OnDisappearing()
{
    base.OnDisappearing();
    // 恢复全局ToolbarItem的可见性
    foreach (var toolbarItem in Shell.Current.ToolbarItems)
    {
        if (toolbarItem.Tag?.ToString() == "GlobalSecondary")
        {
            toolbarItem.IsVisible = true;
        }
    }
}

方法二:临时移除并恢复ToolbarItem集合

如果不想使用标记,可在页面初始化时保存全局ToolbarItem的副本,页面出现时移除,离开时重新添加:

步骤1:保存全局ToolbarItem副本

private List<ToolbarItem> _globalToolbarItems;

public TargetPage()
{
    InitializeComponent();
    // 提前复制全局ToolbarItem集合
    _globalToolbarItems = Shell.Current.ToolbarItems.ToList();
}

步骤2:在生命周期中切换集合

protected override void OnAppearing()
{
    base.OnAppearing();
    // 清空当前Shell的ToolbarItem
    Shell.Current.ToolbarItems.Clear();
}

protected override void OnDisappearing()
{
    base.OnDisappearing();
    // 恢复全局ToolbarItem,避免重复添加
    foreach (var item in _globalToolbarItems)
    {
        if (!Shell.Current.ToolbarItems.Contains(item))
        {
            Shell.Current.ToolbarItems.Add(item);
        }
    }
}

注意:方法二需注意集合引用问题,恢复时要判断是否已存在,适合不需要区分全局与页面自有ToolbarItem的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:43:27