Xamarin Shell 从数据库数据创建的 Flyout

Xamarin Shell Flyout created from database data

我有列表应用程序和每个列表中的项目。列表及其项目存储在两个表中。列表数据就像“杂货店”,列表项就像“香蕉”等。您可以在应用程序中添加列表和项目。现在我有一个列出列表名称的列表内容页面。点击其中一个,您将转到该列表中项目的内容页面。这可行,但我想使用 AppShell.xaml.cs 文件中的数据库查询中的列表名称填充 Shell 弹出窗口。我想做这样的事情:

                ShellSection shell_section = new ShellSection();

                var lists = await SLOMBListDataStore.GetSLOMBListsAsync(true);
                foreach (var list in lists)
                {
                    shell_section.Title = list.ListName;
                    shell_section.Icon = "tab_feed.png";
                    shell_section.Items.Add(new ShellContent() { Content = new SLOMBListDataPage(new SLOMBListDataViewModel(list.id)) });
                    this.Items.Add(shell_section);
                }

                BindingContext = this;
            

顺便说一句,这行不通。如果我使用 shell_section1、shell_section2 等,则可以手动创建条目,但是您必须对列表进行硬编码。是否可以做我想做的事,从查询数据创建弹出窗口?谢谢

尝试将初始化代码放入 for 循环中,例如:

var lists = await SLOMBListDataStore.GetSLOMBListsAsync(true);
foreach (var list in lists)
{
    ShellSection shell_section = new ShellSection();

    shell_section.Title = list.ListName;
    shell_section.Icon = "tab_feed.png";
    shell_section.Items.Add(new ShellContent() { Content = new SLOMBListDataPage(new SLOMBListDataViewModel(list.id)) });
    this.Items.Add(shell_section);
}

您需要为每条记录创建一个新实例。