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

WinUI桌面应用横向NavigationViewItem选中下划线过短问题

解决方案

这不是设计缺陷,WinUI的NavigationView在Top模式下的默认下划线是固定宽度,并非完全匹配文本长度。你可以通过以下两种方式自定义下划线:

  • 修改NavigationViewItem的默认样式
    提取NavigationViewItem的完整样式模板,找到名为SelectedIndicator的矩形元素,将它的Width属性设为Auto,或者绑定到文本内容的实际宽度。示例片段如下:

    <Style TargetType="NavigationViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="NavigationViewItem">
                    <!-- 保留原有模板其他元素,仅修改SelectedIndicator -->
                    <Rectangle x:Name="SelectedIndicator"
                               Width="Auto"
                               Height="2"
                               Fill="{ThemeResource NavigationViewSelectionIndicatorForeground}"
                               HorizontalAlignment="Left"
                               VerticalAlignment="Bottom"/>
                    <!-- 其余模板内容省略 -->
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
  • 通过VisualState动态调整宽度
    在NavigationViewItem的样式中,针对Selected视觉状态,将SelectedIndicator的宽度绑定到内容展示控件的实际宽度。示例如下:

    <VisualState x:Name="Selected">
        <VisualState.Setters>
            <Setter Target="SelectedIndicator.Width" 
                    Value="{Binding ElementName=ContentPresenter, Path=ActualWidth}"/>
        </VisualState.Setters>
    </VisualState>
    

另外,你当前代码中给NavigationView设置了Margin="-50,0,0,0",这个负边距可能会干扰布局逻辑,建议检查是否有必要保留,避免引发其他显示问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:26:17