Поделиться через


Новые возможности WPF для .NET 10 (предварительная версия)

В этой статье представлен общий обзор новых возможностей Windows Presentation Foundation (WPF) в .NET 10 Preview. Подробные сведения см. в объявлениях о выпуске.

.NET 10 Preview 5 был выпущен в июне 2025 года.

Объявления о выпуске

Каждое объявление о выпуске содержит подробные сведения об изменениях WPF для .NET 10:

Улучшения производительности

Производительность была улучшена путем замены внутренних структур данных базовыми типами .NET, такими как ReadOnlyCollection<T>. Это минимизировало выделение ресурсов в автоматизации пользовательского интерфейса и диалоговых окнах, а также ускорило преобразование формата пикселей.

Улучшенная производительность путем оптимизации операций кэша, обработки массивов и переноса загрузчика коллекции шрифтов в управляемый код.

Производительность была оптимизирована для отрисовки шрифтов, динамических ресурсов, вводной обработки, журналирования трассировки, использования регулярных выражений и синтаксического анализа XAML.

Изменения стиля Fluent

В .NET 10 исправлены различные ошибки, чтобы улучшить поддержку стиля Fluent UI в WPF. Поддержка стиля пользовательского интерфейса Fluent по-прежнему выполняется.

Предупреждение

В .NET 10 Preview 4 появилась ошибка, связанная с текучими стилями. Дополнительные сведения см. в заметках о выпуске .NET 10 (предварительная версия 4).

Изменения буфера обмена

WPF и Windows Forms теперь используют тот же API буфера обмена. Обе настольные технологии объединяют то, как они взаимодействуют с буфером обмена.

.NET 9 обесценил BinaryFormatter, используемый в некоторых операциях буфера обмена. Эти операции буфера обмена требовали от вас присоединиться к пакету совместимости или обойти операцию. Чтобы облегчить боль в удалении от BinaryFormatter, .NET 10 обнаживает определенные методы буфера обмена, чтобы указать, что они не должны использоваться. Дополнительные методы добавляются, чтобы помочь сериализации JSON с данными буфера обмена, обходя необходимость BinaryFormatter.

Исправления ошибок

Устранены различные ошибки, включая типы курсоров элементов пользовательского интерфейса, проблемы со сбоями при нулевых потоках растровых изображений, ошибки на этапах сборки и тестирования, а также незначительные ошибки в BitmapMetadata и собственных зависимостях.

Устранены проблемы локализации для ScrollViewer и ContextMenu.

Добавлены более 4000 модульных тестов для System.Xaml и WindowsBase.

Улучшенная производительность путем оптимизации операций кэша, обработки массивов и переноса загрузчика коллекции шрифтов в управляемый код.

Очистка кода

Перемещение из .NET Framework оставило за собой неиспользуемые атрибуты и код, связанные с Code Access Security (CAS). Многие из них были удалены в базе кода .NET.

  • Удалите неиспользуемые строки ресурсов CAS и его переводы из всех библиотек.
  • Удалите неиспользуемый код CAS и XBAP из OleCmdHelper/ISecureCommand.
  • Удалите неиспользуемый код CAS из FontSourceCollection/FontSource.

Проводится обширная очистка кода, включая стандартизацию синтаксиса и ясность аргументов, для улучшения удобства чтения кода и удобства обслуживания. Шаблоны отладки были обновлены, и устаревшие элементы, такие как 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,
    }
}

Прочие изменения

  • Интегрированная компиляция разметки во время разработки для упрощения рабочих процессов разработки.