NavigationView-使用C#添加菜单项会导致将NavigationViewItem嵌套在生成的NavigationViewItem中 [英] NavigationView - adding menu items with C# results in NavigationViewItem being nested in a generated NavigationViewItem
问题描述
我正在尝试通过后台代码将菜单项添加到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的内容,因此XAML树和呈现的菜单如下所示(由于此,左侧有太多填充):
Microsoft文档中的示例代码使用的语法与我使用的语法相同。
如果我使用字符串,菜单项将正确呈现,但是我不能轻松地设置菜单项的任何属性。我知道我可以循环返回这些项以配置每个项,但它似乎应该正确呈现。
是我做错了什么,还是控件中有错误?
XAML
当您从代码后台添加新项时,它使用新项的默认NavigationViewItem
样式,并且它应该与您在推荐答案中使用的第一个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);
}
}
这篇关于NavigationView-使用C#添加菜单项会导致将NavigationViewItem嵌套在生成的NavigationViewItem中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!