本文简要概述了 .NET 10 预览版中 Windows Presentation Foundation (WPF)的新增功能。 有关详细信息,请参阅 发布公告。
.NET 10 预览版 5 于 2025 年 6 月发布。
版本公告
每个发布公告提供有关 .NET 10 的 WPF 更改的详细信息:
性能改进
通过将内部数据结构替换为基本 .NET 类型(例如 ReadOnlyCollection<T>),提高了性能。 这最大限度地减少了 UI 自动化和文件对话框中的分配,并加快了像素格式转换的速度。
通过优化缓存作、数组处理以及将字体集合加载程序迁移到托管代码来提高性能。
针对字体呈现、动态资源、输入合成、跟踪日志记录、正则表达式使用情况和 XAML 分析优化了性能。
流畅的样式更改
.NET 10 中已解决了各种 bug,以改进对 WPF 中 Fluent UI 样式的支持。 Fluent UI 样式支持仍在进行中。
Fluent 样式添加了更多控件,例如:
修复了 Expander 的动画。
修复了与
HighContrast
相关的崩溃问题。为控件添加了遗漏的 RecognizesAccessKey 标记。
已修复MenuItem、Expander和TreeViewItem从右到左布局的问题。
警告
.NET 10 预览版 4 引入了与 Fluent 样式相关的 bug。 有关详细信息,请参阅 .NET 10 预览版 4 发行说明。
剪贴板更改
WPF 和 Windows 窗体现在使用相同的剪贴板 API。 这两种桌面技术统一了它们与剪贴板的交互方式。
.NET 9 已将 BinaryFormatter
弃用,它用于某些剪贴板操作。 这些剪贴板操作要求你选择启用兼容包,或者解决操作相关的问题。 为了减轻从 BinaryFormatter
迁移的困难,.NET 10 将废弃某些剪贴板方法,以表明它们不应再被使用。 我们正在添加更多方法来帮助用户使用剪贴板数据进行 JSON 序列化,从而避免对 BinaryFormatter
的需求。
故障修复
解决了各种问题,包括 UI 元素游标类型、当位图流为空时的崩溃问题、生成和测试步骤的错误,以及 BitmapMetadata 和本机依赖项中的小 bug。
解决了ScrollViewer和ContextMenu的本地化问题。
用于 System.Xaml
和 WindowsBase
的单元测试超过 4,000 个。
通过优化缓存作、数组处理以及将字体集合加载程序迁移到托管代码来提高性能。
代码清理
由于迁移出 .NET Framework 环境,导致与代码访问安全性(CAS)相关的属性和代码没有被使用。 其中许多已在 .NET 代码库中删除。
- 从所有库中删除未使用的 CAS 资源字符串及其翻译。
- 从
OleCmdHelper/ISecureCommand
中删除未使用的 CAS 和 XBAP 代码。 - 从
FontSourceCollection/FontSource
中删除未使用的 CAS 代码。
进行了广泛的代码清理,包括语法标准化和参数清晰度,以提高代码可读性和可维护性。 调试模式已现代化,旧构造(如 ArrayList
已逐步淘汰)以保持可维护性。
新 API
社区贡献者 bstordrup 为 MessageBox
提供了更多按钮和结果选项的增强。 有关详细信息,请参阅 #9613。
namespace System.Windows
{
public enum MessageBoxButton
{
OK = 0,
OKCancel = 1,
+ AbortRetryIgnore = 2,
YesNoCancel = 3,
YesNo = 4,
+ RetryCancel = 5,
+ CancelTryContinue = 6,
}
public enum MessageBoxResult
{
None = 0,
OK = 1,
Cancel = 2,
+ Abort = 3,
+ Retry = 4,
+ Ignore = 5,
Yes = 6,
No = 7,
+ TryAgain = 10,
+ Continue = 11,
}
}
其他更改
- 合并设计时标记编译,以促进更流畅的开发工作流。