You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于UWP NavigationView模式隐藏NavigationViewItemHeader

解决Windows 10 1709 NavigationView Compact模式下无法隐藏Header的问题

嘿,我之前在Windows 10 1709的NavigationView上也踩过这个坑!这个版本的组件确实没有原生支持Compact模式下自动隐藏NavigationViewItemHeader,不过咱们可以用两种方式解决:

方法一:监听DisplayModeChanged事件手动控制可见性

1709版本的NavigationView其实提供了DisplayModeChanged事件,用来监听显示模式的切换,我们可以在这个事件里手动切换Header的可见性。

步骤1:XAML中添加NavigationView和事件绑定

<NavigationView x:Name="MainNavView" DisplayModeChanged="MainNavView_DisplayModeChanged">
    <NavigationView.MenuItems>
        <NavigationViewItemHeader Content="基础功能"/>
        <NavigationViewItem Content="首页" Icon="Home"/>
        <NavigationViewItem Content="设置" Icon="Settings"/>
        
        <NavigationViewItemHeader Content="扩展功能"/>
        <NavigationViewItem Content="工具" Icon="Tools"/>
        <NavigationViewItem Content="帮助" Icon="Help"/>
    </NavigationView.MenuItems>
</NavigationView>

步骤2:后台代码处理模式切换

如果Header数量少可以逐个控制,要是数量多就遍历MenuItems批量处理:

private void MainNavView_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args)
{
    bool isCompactMode = sender.DisplayMode == NavigationViewDisplayMode.Compact;
    
    // 遍历所有菜单项,找到Header并切换可见性
    foreach (var menuItem in sender.MenuItems)
    {
        if (menuItem is NavigationViewItemHeader header)
        {
            header.Visibility = isCompactMode ? Visibility.Collapsed : Visibility.Visible;
        }
    }
}

方法二:升级Windows SDK到更高版本(推荐)

1709是NavigationView刚推出的版本,功能还比较基础。如果你项目的目标版本可以升级到Windows 10 1803(版本17134)及以上,后续版本的NavigationView已经原生支持Compact模式下自动隐藏Header,而且新增了PaneClosing、PaneOpened等更实用的Pane相关事件,能省掉很多手动处理的麻烦。

内容的提问来源于stack exchange,提问作者berkb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:25:37