代码之家  ›  专栏  ›  技术社区  ›  CXL

NavigationView-添加带有C的菜单项会导致NavigationViewItem嵌套在生成的NavigationViewItem中

  •  0
  • CXL  · 技术社区  · 8 年前

    <ct:NavigationView x:Name="NavMain" ItemInvoked="NavMain_ItemInvoked">
        <ct:NavigationView.MenuItems>
            <ct:NavigationViewItem Content="Home"/>
        </ct:NavigationView.MenuItems>
    </ct:NavigationView>
    

    C#:

    private void RenderMenu()
    {
        NavMain.MenuItems.Add(new NavigationViewItemSeparator());
    
        foreach (TarotSuit suit in deck.Suits)
        {
            // make a nav menu item for the suit
            NavigationViewItem newMenu = new NavigationViewItem();
            newMenu.Content = suit.Suit;
            newMenu.Icon = new SymbolIcon(Symbol.OutlineStar);
    
            NavMain.MenuItems.Add("menu");
        }
    }
    

    内容

    enter image description here

    微软文档中的示例代码使用与我使用的语法相同的语法。

    如果我使用字符串,菜单项将正确呈现,但是我无法轻松设置菜单项的任何属性。我知道我可以遍历这些项来配置每一个,但是看起来应该是正确呈现的。

    我是做错了什么还是这是一个错误的控制?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Breeze Liu - MSFT    8 年前

    当您从代码隐藏中添加新项时,它将使用默认值 NavigationViewItem 新项目的样式,它应该与第一个项目具有相同的样式 你在xaml中使用了。

    如果你想改变 导航视图项 样式,可以添加自定义 导航视图项

    --- 更新 ---

    好吧,你用了 Microsoft.UI.Xaml.Controls.NavigationView ,所以如果您想使用相同样式的 时尚 NavigationView ,您还需要添加 Microsoft.UI.Xaml.Controls.NavigationViewItem 在你的代码里。

    在代码隐藏中,添加命名空间:

    using MUXC = Microsoft.UI.Xaml.Controls;
    

    然后你应该创建新的 Microsoft.UI.Xaml.Controls.NavigationViewItem 对象,然后将它们添加到 :

    private void RenderMenu()
    {
        NavMain.MenuItems.Add(new NavigationViewItemSeparator());
    
        foreach (TarotSuit suit in deck.Suits)
        {
            // make a nav menu item for the suit
            MUXC.NavigationViewItem newMenu = new MUXC.NavigationViewItem();
            newMenu.Content = suit.Suit;
            newMenu.Icon = new SymbolIcon(Symbol.OutlineStar);
    
            NavMain.MenuItems.Add(newMenu);
        }
    }