微软发布 Windows UI Library 3 Preview 4

阅读时间图标 9分钟读


读者帮助支持 MSpoweruser。如果您通过我们的链接购买,我们可能会获得佣金。 工具提示图标

阅读我们的披露页面,了解如何帮助 MSPoweruser 维持编辑团队 查看更多

维努伊 3

WinUI 是一个用户界面层,其中包含用于构建 Windows 应用程序(桌面和 UWP)的现代控件和样式。 作为 Windows 中的原生 UI 层,它体现了 Fluent Design,为每个 Windows 应用程序提供用户期望的精美感觉。

[lwptoc title=”WinUI Library 3 Preview 4″ width=”40%” float=”right”]

WinUI 3 是 WinUI 框架的最新版本,将于今年晚些时候发布。 它将 WinUI 极大地扩展为一个完整的 UX 框架,使 WinUI 可用于所有类型的 Windows 应用程序——从 Win32 到 UWP——用作 UI 层。 准备就绪后,每个 Windows 应用程序都将能够利用其现代控件,无论它们运行的​​ Windows 版本如何。

今天发布 WinUI 3 预览版 4 是一个稳定性预览版本,包括关键的错误修复和框架的其他一般改进。

预览版 4 中引入的功能

  • 与 WinUI 2.5 相同(包括 InfoBar 控件、ProgressRing 和 NavigationView 中的新功能以及错误修复)
  • 自定义标题栏功能:允许开发人员在桌面应用程序中创建自定义标题栏的新 Window.ExtendsContentIntoTitleBar 和 Window.SetTitleBar API。
  • VirtualSurfaceImageSource 支持

过去 WinUI 3 预览版中引入的新特性和功能

WinUI 3 Preview 1-3 中引入了以下特性和功能,WinUI 3 Preview 4 继续支持这些特性和功能。

  • 能够使用 WinUI 创建桌面应用程序,包括 .NET 5 适用于 Win32 应用程序
  • 径向渐变笔刷
  • 选项卡视图更新
  • 黑暗主题更新
  • 改进和更新 网页视图2
    • 支持高 DPI
    • 支持窗口大小调整和移动
    • 更新为针对最新版本的 Edge
    • 不再需要引用特定于 WebView2 的 Nuget 包
  • 交换链面板
  • 捷运核心支持
    • 这使应用程序在启动时更快更轻,并提供更快的资源查找。
  • ARM64支持
  • 在应用程序内部和外部拖放
  • RenderTargetBitmap(目前只有 XAML 内容 - 没有 SwapChainPanel 内容)
  • 自定义光标支持
  • 线程外输入
  • 改善我们的工具/开发人员经验:
    • 实时可视树,热重载,实时属性资源管理器和类似工具
    • WinUI 3 的智能感知
  • 开源迁移所需的改进

有关 WinUI 3 的优势和 WinUI 路线图的更多信息,请参阅 Windows UI 库路线图 在GitHub上。

预览版 4 中修复的错误列表

下面是自预览版 3 以来团队已修复的面向用户的错误列表。围绕稳定性和改进我们的测试也有很多工作正在进行。

  • 此版本采用了新版本的 CS/WinRT 和 Windows SDK,修复了以下错误:
    • 使用 {Binding} 绑定到 URI 属性时崩溃
    • C#/WinRT Marshal 函数无法与 .NET 5 正确互操作
  • 在 Windows Insider Builds 上运行时 WinUI 3 崩溃
    • 感谢多个社区贡献者在 GitHub 上报告此错误!
  • WebView2 不会将主机应用程序的语言/区域设置应用于 CoreWebView2Environment
  • Windows Community Toolkit DataGrid 控件在启动/出现滚动条时崩溃应用程序
    • 感谢多个社区贡献者在 GitHub 上报告此错误!
  • 显示模式更改时页面渲染进入不良状态
  • 在 CalendarView 中使用语言组合框时崩溃
  • WinUI 3 桌面:无法从 WebView2 中跳出
  • WinUI 3 桌面:带有派生 TreeViewNodes 的 TreeView 崩溃
  • WinUI 3 桌面:无法在 ContentDialog 内的 TextBox 中输入文本
  • WinUI 3 桌面:ALT 和 F6 不起作用
  • 旧的被移除的 SwapChainPanel 呈现在新的 SwapChain 之上
  • WinUI 3 桌面:无法使用触控板滚动
  • 在同一线程上使用具有多个窗口的 NavigationView 控件时崩溃
  • 辅助功能问题:在 WinUI 桌面应用程序启动时显示焦点矩形
  • 在 DataGrid 中滚动时访问冲突
  • WinUI 3 桌面:选项卡循环不起作用
  • 使用 WinUI Xaml Islands 在桌面应用程序中拖放 GridView 失败
  • 辅助功能问题:无法在 WinUI 3 桌面上使用 PageUp/PageDown 键滚动
  • WebView2 的视口大小错误
  • 打开 MenuFlyout 后单击时 WebView2 崩溃
  • WinUI 3 桌面:尝试关闭 DropDownButton 或 SplitButton 的弹出按钮会导致应用程序崩溃
  • WebView2:双击鼠标右键导致崩溃
  • 单击 ToggleSplitButton 会导致应用程序崩溃
  • WinUI 3 桌面:任务栏上可见的空 DesktopWindowXamlSource 窗口
  • WinUI 3 桌面:DataGrid 不显示
  • WinUI 3 桌面:无法将文件拖放到网格上
  • WinUI 3 桌面:WinUI 3 Preview 2 中的 ItemsRepeater 崩溃
  • 更新绑定时抛出 AccessViolationException
  • WinUI 3 桌面:滚动 NavigationView 上的应用程序崩溃
  • ItemsControl 在其 ItemsSource 集合中动态添加或删除项目时不会更新。
  • 如果启用了 C++ 一致性模式,则 App.xaml.gh 中的编译错误 C2760

局限性和已知问题

预览版 4 只是一个带有错误、限制和其他问题的预览版,桌面应用程序的场景尤其新。

以下项目是 WinUI 3 Preview 4 的一些已知问题。

开发者工具

  • 仅支持 C# 和 C++/WinRT 应用
  • 桌面应用支持 .NET 5 和 C# 9,并且必须打包在 MSIX 应用中
  • UWP 应用支持 .NET Native 和 C# 7.3
  • 开发人员工具和 Intellisense 可能无法在 Visual Studio 16.8 版中正常工作。
  • 没有 XAML 设计器支持
  • 不支持新的 C++/CX 应用程序,但是,您现有的应用程序将继续运行(请尽快迁移到 C++/WinRT)
  • 对桌面应用程序中的多个窗口的支持正在进行中,但尚未完成和稳定。
    • 如果您发现新问题或具有多窗口行为的回归,请在我们的 repo 中提交错误。
  • 不支持未打包的桌面部署
  • 使用 F5 运行桌面应用程序时,请确保您正在运行打包项目。 在应用程序项目上按 F5 将运行未打包的应用程序,WinUI 3 尚不支持该应用程序。

缺少平台功能

  • Xbox 支持
  • HoloLens 支持
  • 窗口化弹出窗口
    • 更具体地,所述 ShouldConstrainToRootBounds 属性总是表现得好像它被设置为 true,无论属性值如何。
  • 墨水支持
  • Acrylic
  • MediaElement 和 MediaPlayerElement
  • 地图控件
  • SwapChainPanel 和非 XAML 内容的 RenderTargetBitmap
  • SwapChainPanel 不支持透明度
  • Global Reveal 使用后备行为,实心画笔
  • 此版本不支持 XAML 岛
  • 第 3 方生态系统库将无法充分发挥作用
  • IME 不起作用

已知的问题

  • Alt+F4 不会关闭桌面应用程序窗口。
  • 由于与变化 核心窗口,以下 WinRT API 可能不再适用 桌面版 预期的应用程序:

    有关在 WinUI 3 桌面应用程序中使用 WinRT API 的详细信息,请参阅 桌面应用程序可用的 Windows 运行时 API.

  • Windows.UI.ViewManagement.UISettings.ColorValuesChanged 事件 桌面应用程序不再支持。 如果您使用它来检测 Windows 主题的更改,这可能会导致问题。
  • 此版本包括一些实验性 API。 这些尚未经过团队的彻底测试,可能存在未知问题。 请 提交错误 如果您遇到任何问题,请访问我们的仓库。
  • 以前,要获取 CompositionCapabilities 实例,您可以调用 CompositionCapabilites.GetForCurrentView(). 但是,此调用返回的功能是 不能 取决于视图。 为了解决和反映这个问题,我们在此版本中删除了 GetForCurrentView() 静态,所以现在您可以创建一个 作曲能力 直接对象。
  • 对于 C# UWP 应用:WinUI 3 框架是一组 WinRT 组件,可以从 C++(使用 C++/WinRT)或 C# 中使用。 使用 C# 时,有两个版本的 .NET,具体取决于应用程序模型:在 UWP 应用程序中使用 WinUI 3 时,您使用的是 .NET Native; 在桌面应用程序中使用时,您使用的是 .NET 5(和 C#/WinRT)。在 UWP 中将 C# 用于 WinUI 3 应用程序时,与 WinUI 3 桌面应用程序或 C# 中的 C# 相比,存在一些 API 命名空间差异WinUI 2 应用程序:某些类型位于 Microsoft 命名空间而不是 System 命名空间。 例如,而不是 INotifyPropertyChanged 界面在 System.ComponentModel 命名空间,它在 Microsoft.UI.Xaml.Data 命名空间。这适用于:
    • INotifyPropertyChanged (及相关类型)
    • INotifyCollectionChanged
    • ICommand

     System 命名空间版本仍​​然存在,但不能与 WinUI 3 一起使用。这意味着 ObservableCollection 在 WinUI 3 C# UWP 应用程序中不能按原样工作。 有关解决方法,请参阅 集合互操作示例 ,在 XAML 控件库示例.

接下来会发生什么?

开发者可以看看微软的详细介绍 功能路线图 查看何时将特定功能引入 WinUI 3。

安装 WinUI 3 预览版 4

WinUI 3 Preview 4 包括 Visual Studio 项目模板,可帮助您开始使用基于 WinUI 的用户界面构建应用程序,以及包含 WinUI 库的 NuGet 包。 要安装 WinUI 3 Preview 4,请按照以下步骤操作。

Windows社区工具包

如果您使用的是 Windows 社区工具包, 下载最新版本.

除了 限制和已知问题,使用 WinUI 项目构建应用类似于使用 XAML 和 WinUI 2.x 构建 UWP 应用。 因此,大多数 指导文件 对于 UWP 应用和 用户界面 Windows SDK 中的 WinRT 命名空间适用。

有关开始使用 WinUI 项目模板的详细信息,请参阅以下文章:

此版本的 API 参考文档即将发布,但与此同时,开发人员可以查看 预览版 3 的 WinUI 3 API 参考文档.

如果您使用 WinUI 3 Preview 3 创建了一个项目,您可以升级您的项目以使用 Preview 4。请参阅 WinUI GitHub 存储库 有关详细说明。

为了利用 WinUI 3 Preview 4 中添加的最新工具功能,例如 Hot Reload、Live Visual Tree 和 Live Property Explorer,您必须使用最新的 Visual Studio 预览版和最新的 WinUI 3 预览版,并确保启用Visual Studio 预览功能中的 WinUI 工具,如 这里的说明.

查看 XAML 控件库的 WinUI 3 Preview 4 分支 对于包含所有 WinUI 3 Preview 4 控件和功能的示例应用程序。


WinUI 3 Preview 4 XAML 控件库应用程序示例

此 WinUI 3 预览版旨在用于早期评估并收集开发人员社区的反馈。 这应该 不是 用于生产应用程序。 微软将在 3 年继续发布 WinUI 2021 的预览版,随后在 2021 年 XNUMX 月发布第一个受支持的官方版本。

请用 WinUI GitHub 存储库 提供反馈并记录建议和问题。

有关主题的更多信息: 开发, 微软, winui 3 预览 4