跳到主要内容

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

· 阅读需 4 分钟
作者:小烨App

引言​

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

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

一、为什么选择WinUI 3?​

特性WinFormWPFWinUI 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是一个不错的选择。