我试图通过后面的代码将菜单项添加到NavigationView控件中。
XAML:
<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");
}
}
菜单呈现,但是看起来添加的NavigationViewItem设置为自动生成的NavigationViewItem的 content ,因此XAML树和呈现的菜单看起来像这样(填充过多因此,在左侧):
Microsoft文档中的示例代码使用的语法与我使用的语法相同。
如果我使用字符串,则菜单项将正确呈现,但随后将无法轻松设置菜单项的任何属性。我知道我可以遍历所有项目以配置每个项目,但似乎应该正确渲染。
我是在做错什么还是控件中的错误?
答案 0 :(得分:1)
当您从后面的代码中添加新项目时,它将为新项目使用默认的NavigationViewItem
样式,并且应与您在xaml中使用的第一个NavigationViewItem
样式相同。
如果您想更改NavigationViewItem
样式,则可以在页面中添加自定义NavigationViewItem
样式资源,以便获得所需的外观。
--- 更新 ---
好的,您使用了Microsoft.UI.Xaml.Controls.NavigationView,所以如果您想在NavigationView中使用相同的NavigationViewItem
样式,则还需要在其中添加Microsoft.UI.Xaml.Controls.NavigationViewItem您的代码在后面。
在后面的代码中,添加名称空间:
using MUXC = Microsoft.UI.Xaml.Controls;
然后,您应该创建一个新的Microsoft.UI.Xaml.Controls.NavigationViewItem对象,然后将它们添加到您的NavigationView中:
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);
}
}