我正在尝试创建一个应用程序,其中标签可以在运行时动态添加和删除。我在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?)提出的问题之间的相似之处,但针对他的问题给出的解决方案对我不起作用。
1条答案
按热度按时间r1zk6ea11#
根据代码,似乎使用
MainTabBar.Items.Clear();
,然后选项卡栏不显示。因此,这里的解决方法是在清除项目后添加此代码,
希望对你有用。