WinUI3新项目中NavigationView子项失效及技术选型疑问求助
问题分析
- 报错XLS0501:
NavigationViewItem的Content属性被多次设置,原因是直接在父NavigationViewItem内部放置子NavigationViewItem时,XAML会默认把这些子元素赋值给父项的Content属性,而父项已经通过Content="Favorites"设置过一次,导致冲突。 - 需求:在NavigationView中实现带子项的菜单,不想使用WinUI3 Gallery中的NavigationStore(因导航规模小)。
- 疑问:该继续用WinUI3还是转用UWP?
解决方案
修正子菜单代码
要给NavigationViewItem添加子项,需明确将子项放在NavigationViewItem.MenuItems集合中,而非直接作为父项的子元素。修正后的代码如下:
<Grid> <NavigationView x:Name="MyNavigationView"> <NavigationView.MenuItems> <NavigationViewItem Content="Home" Icon="Home"/> <NavigationViewItem Content="Favorites" Icon="Favorite"> <NavigationViewItem.MenuItems> <NavigationViewItem Content="Item 1"/> <NavigationViewItem Content="Item 2"/> </NavigationViewItem.MenuItems> </NavigationViewItem> <!-- 更多带子项的父菜单项 --> </NavigationView.MenuItems> </NavigationView> </Grid>
这样可避免Content属性重复赋值的问题,正确渲染带展开/折叠功能的子菜单。
框架选择建议
优先选择WinUI3:
- WinUI3是微软当前主推的Windows桌面UI框架,支持最新Windows 10/11特性,性能更优,生态持续完善。
- UWP已不再是微软重点更新方向,后续新功能与优化都会集中在WinUI3上。
- 小规模导航场景完全不需要NavigationStore,直接监听
NavigationView.SelectionChanged事件,手动处理页面切换逻辑即可,实现成本极低。
内容的提问来源于stack exchange,提问作者dotnetdevcsharp
相关产品推荐
相关产品推荐

