一、什么是WinUI
1、概述
WinUI 3 是下一代 WinUI 框架,现在可用于生产应用程序。它将 WinUI 显着扩展为完整的 UX 框架,并作为Windows App SDK的一部分提供. 借助 WinUI 3,现代控件、样式和功能将可用于 Windows 11 和 Windows 10 上的应用程序。
WinUI 3.0是 WinUI 2.0 的重大更新,它将极大地扩展 WinUI 的范围以包含完整的 Windows 10 原生 UI 平台,该平台现在将与 UWP SDK 完全解耦。这意味着您将能够使用 WinUI 3.0 创建桌面应用程序,就像现在使用 WPF 或 WinForms 一样。
2、和之前的技术比较
能力/特点 | WinUI 3 | UWP XAML & WinUI 2 | WPF | WinForms | MFC |
---|---|---|---|---|---|
支持的 Windows 应用类型 | Desktop | UWP | Desktop | Desktop | Desktop |
支持的 Windows 版本 | Win10, 1809+ Win11 (all) | Win10, 1703+ Win11 (all) | Windows XP or higher | Windows XP or higher | Windows XP or higher |
Native C/C++ | 支持 | 支持 | 支持 | ||
.NET 5 支持 | 支持 | 支持 | 支持 | ||
WebView2 (基于 Chromium 的引擎) | 支持 | 支持* | 支持* | ||
内置 Fluent Design 控件 | 支持 | 支持 | |||
内置支持现代输入 (例如触摸、笔、游戏手柄) | 支持 | 支持 | |||
使用最新的 DirectX 版本来提高图形性能 | 支持 | 支持 | |||
高性能数据绑定 (x:Bind) | 支持 | 支持 |
3、它与一般的 UWP 应用程序有何不同?
基本上,它是一个 UWP 应用程序,预先添加了对 Microsoft.UI 程序集 (WinUI3.0) 的引用。
区别一在于 WinUI 3.0 API 位于 Microsoft.UI 命名空间而不是 Windows.UI 命名空间中,因此在复制和粘贴示例代码时可能需要更新命名空间。同样,使用来自 Windows.UI.Xaml 的 UI 控件的库和组件与 WinUI 3.0 不兼容,必须更新到 Microsoft.UI.Xaml。
区别二权限方面是 WinUI 的一个亮点,没有太多束缚的感觉。
二、环境搭建
1、IDE
推荐使用Visual Studio 2022,下载地址。
如果使用 Visual Studio 2019,则需要安装两个单独的补丁,才可以创建WinUI项目,微软官方提供的下载特别慢。
补丁见下面网址
安装适用于 Windows 应用 SDK 的工具 - Windows apps | Microsoft Docs通过安装适当的工具来配置开发计算机,以便使用 Windows 应用 SDK 开发适用于 Windows 的应用。https://docs.microsoft.com/zh-cn/windows/apps/windows-app-sdk/set-up-your-development-environment?tabs=vs-other%2Cvs-2019 也可以从此百度网盘下载,支持c++和c#的两个补丁。
链接:https://pan.baidu.com/s/1vMlIKmSddYhEn0tFuuxJTg
提取码:20vj
2、需要的组件
(1)在安装对话框的“工作负载”选项卡上,选择:
通用 Windows 平台开发
然后,在该工作负荷的安装对话框的 "安装详细信息" 窗格中,确保已选择 " c + + (v143) " 通用 Windows 平台工具"。
用于 C# 应用开发的 .NET 桌面开发
然后,在安装对话框的“安装详细信息”窗格中,选择“Windows 应用 SDK C# 模板”(位于列表底部)。
用于 C++ 应用开发的 C++ 桌面开发
然后,在安装对话框的“安装详细信息”窗格中,选择“Windows 应用 SDK C++ 模板”(位于列表底部)。
(2)在安装对话框的 "单个组件" 选项卡上,在 " sdk、库和框架" 部分中,确保选中Windows 10 SDK (10.0.19041.0) 。
三、创建项目
1、在 Visual Studio 中,选择“文件”“新建”“项目”。在“新建项目”对话框的下拉筛选器中,分别选择“C#或C++”、“Windows”和“WinUI”。
2、输入项目名称,根据需要选择任何其他选项,然后单击“创建”。
3、Visual Studio 生成的项目包含应用的代码。 App.xaml 文件和代码隐藏文件 定义了一个 Application 类,它表示正在运行的应用。 MainWindow.xaml 文件和代码隐藏文件定义了一个 MainWindow 类,它表示应用显示的主窗口。 这些类派生自 WinUI 3 提供的 Microsoft.UI.Xaml 命名空间中的类型。
4、该项目还包括用于将应用生成到 MSIX 包的包清单。
四、其它说明
在创建项目的时候,可以看到第一个是已打包,最后一个是使用Windows应用程序打包项目打包,区别如下。
打包的应用:打包的应用是使用 MSIX 打包的。 MSIX 是一种包格式,为最终用户提供了一种使用新式 UI 安装、卸载和更新其 Windows 应用的便捷方式。
未打包的应用:未打包的应用不使用 MSIX。 它们通常使用 .exe 或 .msi 文件来安装和更新。 许多未打包的应用使用经典 UI 来引导最终用户完成安装向导。
打包和部署参考官方网址
MSIX 打包的优点和缺点
五、总结
-
UWP 是 Windows API 子集的名称,但通常用作在此 API 上运行的沙盒应用程序的简写。
-
WinUI 是适用于 Windows 的现代图形框架。
-
Windows App SDK - 未来,单一 SDK 适用于 Windows 上的任何应用程序,无论语言如何,并且能够在不同的应用程序生命周期之间切换