WPF for .NET 10 预览版中的新增功能

本文简要概述了 .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 样式支持仍在进行中。

警告

.NET 10 预览版 4 引入了与 Fluent 样式相关的 bug。 有关详细信息,请参阅 .NET 10 预览版 4 发行说明

剪贴板更改

WPF 和 Windows 窗体现在使用相同的剪贴板 API。 这两种桌面技术统一了它们与剪贴板的交互方式。

.NET 9 已将 BinaryFormatter弃用,它用于某些剪贴板操作。 这些剪贴板操作要求你选择启用兼容包,或者解决操作相关的问题。 为了减轻从 BinaryFormatter迁移的困难,.NET 10 将废弃某些剪贴板方法,以表明它们不应再被使用。 我们正在添加更多方法来帮助用户使用剪贴板数据进行 JSON 序列化,从而避免对 BinaryFormatter 的需求。

故障修复

解决了各种问题,包括 UI 元素游标类型、当位图流为空时的崩溃问题、生成和测试步骤的错误,以及 BitmapMetadata 和本机依赖项中的小 bug。

解决了ScrollViewerContextMenu的本地化问题。

用于 System.XamlWindowsBase 的单元测试超过 4,000 个。

通过优化缓存作、数组处理以及将字体集合加载程序迁移到托管代码来提高性能。

代码清理

由于迁移出 .NET Framework 环境,导致与代码访问安全性(CAS)相关的属性和代码没有被使用。 其中许多已在 .NET 代码库中删除。

  • 从所有库中删除未使用的 CAS 资源字符串及其翻译。
  • OleCmdHelper/ISecureCommand中删除未使用的 CAS 和 XBAP 代码。
  • FontSourceCollection/FontSource中删除未使用的 CAS 代码。

进行了广泛的代码清理,包括语法标准化和参数清晰度,以提高代码可读性和可维护性。 调试模式已现代化,旧构造(如 ArrayList 已逐步淘汰)以保持可维护性。

新 API

社区贡献者 bstordrupMessageBox 提供了更多按钮和结果选项的增强。 有关详细信息,请参阅 #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,
    }
}

其他更改

  • 合并设计时标记编译,以促进更流畅的开发工作流。