Maui Shell中的动态选项卡

axr492tv  于 2023-02-09  发布在  Shell
关注(0)|答案(1)|浏览(193)

我正在尝试创建一个应用程序,其中标签可以在运行时动态添加和删除。我在AppShell.xaml中有一个标签栏,如以下代码示例所示:

<Shell
    x:Class="foo.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:foo"
    xmlns:views="clr-namespace:foo.Views"
    Shell.FlyoutBehavior="Disabled"
    Shell.BackgroundColor="{DynamicResource ShellBackGroundColor}">
    

    <TabBar x:Name="MainTabBar">
        <ShellContent Title="Home"
                      Icon="alert_icon_2_neg.png"
                      ContentTemplate="{DataTemplate views:StartPage}">
        </ShellContent>
    </TabBar>

</Shell>

我用来更新选项卡的代码如下:

public void UpdateTabs(ObservableCollection<UserAction> list)
{
    MainTabBar.Items.Clear();
    foreach (UserAction action in list)
    {
        MainTabBar.Items.Add(new ShellContent()
        {
            Title = action.Title,
            Icon = action.ImageSource,
            ContentTemplate = new DataTemplate(() => action.ActionPage),
            Route = action.Title
        });
    }
}

这个方法执行后,MainTabBar.Items列表中有正确的shell内容,但是选项卡没有显示在UI中。我该怎么做呢?
此外,我知道这与用户Bagroy(How dynamically add tabs in code behind to Maui Shell TabBar?)提出的问题之间的相似之处,但针对他的问题给出的解决方案对我不起作用。

r1zk6ea1

r1zk6ea11#

根据代码,似乎使用MainTabBar.Items.Clear();,然后选项卡栏不显示。
因此,这里的解决方法是在清除项目后添加此代码,

MainTabBar.Items.Clear();
//add the following two lines
MainTabBar = new TabBar();
this.Items.Add(MainTabBar);

希望对你有用。

相关问题