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 的 content,因此 XAML 树和呈现菜单如下所示(因此左侧的填充过多):
Microsoft 文档中的示例代码使用的语法与我使用的相同。
如果我使用字符串,菜单项会正确呈现,但我无法轻松设置菜单项的任何属性。我知道我可以遍历这些项目来配置每个项目,但它似乎应该正确呈现。
我是不是做错了什么或者这是控件中的错误?
当您从后面的代码中添加新项目时,它会为您的新项目使用默认的 NavigationViewItem
样式,并且它应该与您在 [=] 中使用的第一个 NavigationViewItem
具有相同的样式33=]。
如果您想更改 NavigationViewItem
样式,可以在您的页面中添加自定义 NavigationViewItem
样式资源,这样您就可以获得您想要的外观。
---更新---
好的,你在后面的代码中使用了Microsoft.UI.Xaml.Controls.NavigationView, so if you want use the same style of NavigationViewItem
style in the NavigationView, you should also need to add the Microsoft.UI.Xaml.Controls.NavigationViewItem。
在后面的代码中,添加命名空间:
using MUXC = Microsoft.UI.Xaml.Controls;
那么你应该创建新的 Microsoft.UI.Xaml.Controls.NavigationViewItem object then add them to your 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 控件。
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 文档中的示例代码使用的语法与我使用的相同。
如果我使用字符串,菜单项会正确呈现,但我无法轻松设置菜单项的任何属性。我知道我可以遍历这些项目来配置每个项目,但它似乎应该正确呈现。
我是不是做错了什么或者这是控件中的错误?
当您从后面的代码中添加新项目时,它会为您的新项目使用默认的 NavigationViewItem
样式,并且它应该与您在 [=] 中使用的第一个 NavigationViewItem
具有相同的样式33=]。
如果您想更改 NavigationViewItem
样式,可以在您的页面中添加自定义 NavigationViewItem
样式资源,这样您就可以获得您想要的外观。
---更新---
好的,你在后面的代码中使用了Microsoft.UI.Xaml.Controls.NavigationView, so if you want use the same style of NavigationViewItem
style in the NavigationView, you should also need to add the Microsoft.UI.Xaml.Controls.NavigationViewItem。
在后面的代码中,添加命名空间:
using MUXC = Microsoft.UI.Xaml.Controls;
那么你应该创建新的 Microsoft.UI.Xaml.Controls.NavigationViewItem object then add them to your 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);
}
}