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

如何在WPF应用中实现Windows 11风格的按钮与菜单控件?

WPF控件在Windows 11中不显示圆角样式的问题

我目前正在开发一款小型WPF应用。我注意到,尤其在Windows 11系统中,Button和Menu控件的外观明显过时。Win 11为这些控件带来了圆角设计,但WPF似乎仍在使用更老旧的方形样式:

Windows 11应用中典型的圆角按钮与WPF中<Button/>控件的默认外观对比:

Windows 11风格圆角按钮示例
WPF默认按钮样式

这种情况同样适用于<Menu />——我们来看Windows 11下常规程序的菜单UI样式与我开发的WPF应用中的样式对比:

新版Windows 11菜单样式
WPF默认Menu控件外观

为什么WPF会有这些不同的样式?我查阅了相关资料,很多内容提到要在app.manifest中添加Microsoft.Windows.Common-Controls的引用,但这似乎对我的这些控件没有任何作用。

更令人困惑的是,WPF窗口本身带有圆角,右键点击窗口标题栏弹出的上下文菜单也使用了新样式——似乎只有窗口内部的控件仍采用老旧样式。


原因分析

WPF的默认控件样式并未自动适配Windows 11视觉设计,因为WPF控件模板独立于Win32通用控件体系。Microsoft.Windows.Common-Controls的manifest设置仅对Win32原生控件生效,对WPF原生控件无作用。而窗口标题栏、系统上下文菜单属于系统级UI,会自动调用Windows 11的新样式。

解决方法

1. 集成WinUI 3控件

WinUI 3提供了完全适配Windows 11的控件体系,可在WPF中嵌入使用:

  • 安装Microsoft.UI.Xaml.Wpf NuGet包
  • 在WPF窗口中引用WinUI控件:
    <Window ...
            xmlns:muxc="clr-namespace:Microsoft.UI.Xaml.Controls;assembly=Microsoft.UI.Xaml">
        <Grid>
            <muxc:Button Content="WinUI圆角按钮" />
            <muxc:MenuBar>
                <muxc:MenuBarItem Title="文件">
                    <muxc:MenuFlyoutItem Text="打开" />
                    <muxc:MenuFlyoutItem Text="保存" />
                </muxc:MenuBarItem>
            </muxc:MenuBar>
        </Grid>
    </Window>
    

2. 自定义WPF控件模板

如果不想引入WinUI,可手动修改控件模板实现圆角效果:

  • 示例:给Button添加圆角样式
    <Style TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="{TemplateBinding Background}"
                            CornerRadius="8"
                            Padding="12,8"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
  • 对于Menu和MenuItem,需同步修改模板,参考Windows 11设计规范(圆角半径通常为8px)调整配色与交互状态。

3. 使用第三方适配库

已有第三方WPF控件库完成Windows 11样式适配,例如:

  • Material Design In XAML Toolkit:可配置为Windows 11风格
  • MahApps.Metro:支持现代UI样式,包含圆角控件

注意事项

  • 自定义模板时,需同步适配Hover、Pressed等交互状态的视觉反馈,确保符合Windows 11设计逻辑
  • WinUI集成需注意项目.NET版本兼容性,确保版本支持WinUI 3运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:06:47