dotnet/wpf

Regression in double properties and NaN

Open

#11.317 aperta il 11 dic 2025

Vedi su GitHub
 (0 commenti) (3 reazioni) (1 assegnatario)C# (1126 fork)batch import
help wantedregression

Metriche repository

Star
 (6683 star)
Metriche merge PR
 (Merge medio 2g 7h) (41 PR mergiate in 30 g)

Descrizione

Description

Throw helpers introduced in https://github.com/dotnet/wpf/pull/8408 caused a behavioral regression thus some double properties no longer accept NaN as a value.

The original condition in net framework and up to net8 was value < 0, the new condition is double.IsNegative(value). The latter now causes an ArgumentOutOfRangeException. See https://github.com/dotnet/runtime/issues/92834#issuecomment-1741525749 on why these are not the same.

Reproduction Steps

// Get an existing visual
TextBox tb = ...
// Prepare some other text using the same parameters
FormattedText ft = new(...);
ft.LineHeight = tb.LineHeight;

Expected behavior

Property value is accepted

Actual behavior

ArgumentOutOfRangeException is thrown

Regression?

Yes. Works in .NET Framework and up to .NET 8

Known Workarounds

In the example above it's simple to fix as NaN is eventually treated as 0 (converted to int.MinValue here then ignored here) though this does not seem intentional.

Other properties may be more difficult to work around

Impact

No response

Configuration

No response

Other information

No response

Guida contributor