从 UWP C# 中的数据列表在运行时构建 XAML 个元素?

Build XAML Elements in Runtime, From a List of Data in UWP C#?

我有一个 List<string> 在下面,

List<string> animeList = new()
{
    "Current",
    "Planning",
    "Paused",
    "Dropped",
    "Custom List"
}

我想根据上面列表中的可用数据在运行时构建一个 XAML 元素。准确地说,我想构建一个来自 Microsoft.UI.Xaml.ControlsNavigationViewItem,如下图,

这张图中的Xaml是硬编码的,XAML在下面,

<winui:NavigationViewItem Content="Anime List" x:Name="animeList">
                <winui:NavigationViewItem.Icon>
                    <FontIcon Glyph="&#xE29B;"
                              Style="{StaticResource FontIconStyle}"/>
                </winui:NavigationViewItem.Icon>
                <winui:NavigationViewItem.MenuItems>
                    <winui:NavigationViewItem Content="Current"/>
                    <winui:NavigationViewItem Content="Planning"/>
                    <winui:NavigationViewItem Content="Paused"/>
                    <winui:NavigationViewItem Content="Dropped"/>
                    <winui:NavigationViewItem Content="Custom List"/>
                </winui:NavigationViewItem.MenuItems>
            </winui:NavigationViewItem>

下面是 winui xml 命名空间,

xmlns:winui="using:Microsoft.UI.Xaml.Controls"

在这里,我不想对 NavigationViewItem 进行硬编码,而是想在运行时从上面的 animeList 构建 NavigationViewItem。我该怎么做。

提前致谢...

您可以创建一个循环,并为每个项目创建一个新的 NavigationViewItem

public MainPage()
{
    this.InitializeComponent();

    foreach (string anime in animeList)
    {
        animeNavigationViewItem.MenuItems.Add(
            new winui.NavigationViewItem
            {
                 Content = anime
            });
    }
}

使用 MenuItemsSource 属性:

NavigationViewItem 绑定到您的项目列表
<NavigationViewItem Content="Anime List"
                    MenuItemsSource="{x:Bind animeList}">
    <NavigationViewItem.Icon>
        <FontIcon Glyph="&#xE29B;" Style="{StaticResource FontIconStyle}"/> />
    </NavigationViewItem.Icon>
</NavigationViewItem>

没有理由显式循环。