Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article provides a high-level overview about what's new with Windows Presentation Foundation (WPF) in .NET 10 Preview. For detailed information, see the release announcements.
.NET 10 Preview 4 was released in May 2025.
Release announcements
Performance improvements
Performance was improved by replacing internal data structures with base .NET types, such as ReadOnlyCollection<T>. This minimized allocations in UI automation and file dialogs, and speeding up pixel format conversions.
Enhanced performance by optimizing cache operations, array handling, and migrating font collection loader to managed code.
Performance was optimized across font rendering, dynamic resources, input composition, trace logging, regex usage, and XAML parsing.
Fluent style changes
Various bug fixes have been addressed in .NET 10, to improve the Fluent UI style support in WPF. Fluent UI style support is still in progress.
Fluent styles added more controls, such as:
Fixed the animation for Expander.
Fixed crashes related to
HighContrast
.Added missing RecognizesAccessKey for controls.
Right-to-left layout issues have been fixed for MenuItem, Expander, TreeViewItem.
Warning
.NET 10 Preview 4 introduced a bug related to fluent styles. For more information, see .NET 10 Preview 4 release notes.
Clipboard changes
WPF and Windows Forms now use the same clipboard API. Both desktop technologies unify how they interact with the clipboard.
.NET 9 obsoleted BinaryFormatter
, which is used in some clipboard operations. These clipboard operations required you to opt in to compatibility package, or work around the operation. To ease the pain of moving away from BinaryFormatter
, .NET 10 is obsoleting certain clipboard methods to indicate that they shouldn't be used. More methods are being added to help JSON serialization with clipboard data, circumventing the need for BinaryFormatter
.
Bug fixes
Addressed various bug fixes including UI element cursor types, crash issues when bitmap streams are null, build and test step errors, and minor bugs in BitmapMetadata and native dependencies.
Addressed localization issues for ScrollViewer and ContextMenu.
Over 4,000 unit tests for System.Xaml
and WindowsBase
added.
Enhanced performance by optimizing cache operations, array handling, and migrating font collection loader to managed code.
Code cleanup
Moving out of .NET Framework left behind unused Code Access Security (CAS) related attributes and code. Many of these have been removed in the .NET codebase.
- Remove unused CAS resource strings and its translations from all libraries.
- Remove unused CAS and XBAP code from
OleCmdHelper/ISecureCommand
. - Remove unused CAS code from
FontSourceCollection/FontSource
.
Conducted extensive code cleanups, including syntax standardization and argument clarity, to improve code readability and maintainability. Debugging patterns were modernized and legacy constructs like ArrayList
were phased out for maintainability.
New APIs
Community contributor bstordrup enhanced the MessageBox
with more button and result options. For more information, see #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,
}
}
Miscellaneous changes
- Incorporated design-time markup compilation to facilitate smoother development workflows.
.NET Desktop feedback