微软发布 Windows UI Library 3 Preview 4
9分钟读
发表于
阅读我们的披露页面,了解如何帮助 MSPoweruser 维持编辑团队 查看更多
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 可能不再适用 桌面版 预期的应用程序:
ApplicationView
并且所有相关的 API 将不再起作用。CoreApplicationView
并且所有相关的 API 将不再起作用。- All / 全部
GetForCurrentView
可能不支持 API,例如CoreInputView.GetForCurrentView
. CoreWindow.GetForCurrentThread
现在将返回 null。
有关在 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 分支)
查看 XAML 控件库的 WinUI 3 Preview 4 分支 对于包含所有 WinUI 3 Preview 4 控件和功能的示例应用程序。
WinUI 3 Preview 4 XAML 控件库应用程序示例
此 WinUI 3 预览版旨在用于早期评估并收集开发人员社区的反馈。 这应该 不是 用于生产应用程序。 微软将在 3 年继续发布 WinUI 2021 的预览版,随后在 2021 年 XNUMX 月发布第一个受支持的官方版本。
请用 WinUI GitHub 存储库 提供反馈并记录建议和问题。
用户论坛
0消息