告别传统WinForm:用WinUI 3打造毛玻璃效果的现代桌面应用

引言

还记得那些年我们用过的WinForm应用吗?灰色的边框、方正的按钮、一成不变的外观。在这个看脸的时代,用户对桌面应用的视觉要求越来越高。而WinUI 3的出现,让.NET开发者终于可以轻松打造出具有现代感的桌面应用。

本文将带你从零开始,用WinUI 3打造一个具有毛玻璃效果、自定义标题栏的现代化应用。最终效果将媲美Windows 11原生应用。

一、为什么选择WinUI 3?

特性

WinForm

WPF

WinUI 3

Fluent Design

需第三方

✅ 原生

云母/亚克力材质

✅ 原生

圆角控件

需自定义

需自定义

✅ 原生

现代导航

需第三方

NavigationView

性能

一般

一般

优秀

二、环境准备

在开始之前,请确保你已经安装了:

  • Visual Studio 2022(17.0+)
  • .NET 6 SDK 或更高版本
  • WinUI 3 项目模板(可通过VS Installer安装)

三、创建项目并启用云母背景

3.1 创建新项目

选择“空白应用,打包的 (WinUI 3 Blank App)”模板。

3.2 启用云母材质

云母(Mica)是Windows 11引入的半透明材质,能根据桌面壁纸动态取色,营造通透感,在Window对象的xaml文件开启即可;

<Window.SystemBackdrop>

    <MicaBackdrop />

</Window.SystemBackdrop>

四、自定义标题栏

专业应用通常会隐藏默认标题栏,让内容区延伸到顶部。

4.1 修改MainWindow.xaml中自定义个标题栏

<Grid x:Name="AppTitleBar"

        Height="32"

        VerticalAlignment="Top"

        Background="Orange">

    <TextBlock x:Name="TitleTextBlock"

                Text="My WinUI3"

                Margin="12,0,0,0"

                VerticalAlignment="Center"

                Style="{StaticResource CaptionTextBlockStyle}"/>

</Grid>

4.2 设置标题栏拖拽区域

在 MainWindow.xaml.cs 初始化时设置扩展区域到标题栏;

        public MainWindow()

        {

            InitializeComponent();

            this.ExtendsContentIntoTitleBar = true;

            SetTitleBar(AppTitleBar);

        }

这样就得到了一个自定义标题栏;

五、核心布局控件实战

WinUI 3提供了强大的布局控件,掌握它们是构建现代UI的基础。

5.1 Grid——网格布局

Grid是最常用的布局控件,适合构建复杂界面,如下定义了上下两行布局,第一行做自定义标题栏,第二行做导航栏;

<Grid>

    <Grid.RowDefinitions>

        <!--标题栏内容-->

        <RowDefinition Height="Auto"/>

        <!--导航栏-->

        <RowDefinition Height="*"/>

    </Grid.RowDefinitions>              

    <Grid x:Name="AppTitleBar" Grid.Row="0"/>

    <NavigationView x:Name="AppNavPanel" Grid.Row="1" />

</Grid>

5.2 StackPanel——简单堆叠

StackPanel用于简单的内容堆叠,可以水平或垂直排列,如下定义了一排水平排列按钮;

<StackPanel Grid.Row="1" Orientation="Horizontal" Spacing="8" HorizontalAlignment="Center">

    <Button Content="New" />

    <Button Content="Edit" />

    <Button Content="Delete" />

</StackPanel>

5.3综合-卡片式列表

结合Grid和StackPanel,我们可以创建类似Windows 11设置的卡片式界面,如果你想进一步添加滚动条,外层包裹ScrollViewer即可,当ScrollViewer的内容区域超出窗口范围时,会自动添加滚动条,如下所示:

六、总结

WinUI 3为.NET桌面开发者带来了前所未有的现代UI体验。通过本文的学习,你应该已经掌握了:

✅ 启用云母/亚克力毛玻璃效果
✅ 自定义标题栏,打造专业外观
✅ 使用Grid和StackPanel构建灵活布局
✅ 创建卡片式界面
✅ 响应式窗口适配

相比传统WinForm,WinUI 3既有简单容易上手的一面,也有高级复杂的功能,高级功能虽然复杂,但带来的视觉和用户体验提升是巨大的。如果你想在2026年打造一款让人眼前一亮的桌面应用,WinUI 3是一个不错的选择。