diff --git a/src/Avalonia.Controls/Primitives/RangeBase.cs b/src/Avalonia.Controls/Primitives/RangeBase.cs
index f1ee7c0e1a..baa51f92ec 100644
--- a/src/Avalonia.Controls/Primitives/RangeBase.cs
+++ b/src/Avalonia.Controls/Primitives/RangeBase.cs
@@ -75,7 +75,10 @@ namespace Avalonia.Controls.Primitives
set
{
- ValidateDouble(value, "Minimum");
+ if (!ValidateDouble(value))
+ {
+ return;
+ }
if (IsInitialized)
{
@@ -102,7 +105,10 @@ namespace Avalonia.Controls.Primitives
set
{
- ValidateDouble(value, "Maximum");
+ if (!ValidateDouble(value))
+ {
+ return;
+ }
if (IsInitialized)
{
@@ -129,7 +135,10 @@ namespace Avalonia.Controls.Primitives
set
{
- ValidateDouble(value, "Value");
+ if (!ValidateDouble(value))
+ {
+ return;
+ }
if (IsInitialized)
{
@@ -164,16 +173,12 @@ namespace Avalonia.Controls.Primitives
}
///
- /// Throws an exception if the double value is NaN or Inf.
+ /// Checks if the double value is not inifinity nor NaN.
///
/// The value.
- /// The name of the property being set.
- private static void ValidateDouble(double value, string property)
+ private static bool ValidateDouble(double value)
{
- if (double.IsInfinity(value) || double.IsNaN(value))
- {
- throw new ArgumentException($"{value} is not a valid value for {property}.");
- }
+ return !double.IsInfinity(value) || !double.IsNaN(value);
}
///
diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs
index e2eb628512..34e6b228d0 100644
--- a/tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs
@@ -82,22 +82,6 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.Equal(50, target.Value);
}
- [Fact]
- public void Properties_Should_Not_Accept_Nan_And_Inifinity()
- {
- var target = new TestRange();
-
- Assert.Throws(() => target.Minimum = double.NaN);
- Assert.Throws(() => target.Minimum = double.PositiveInfinity);
- Assert.Throws(() => target.Minimum = double.NegativeInfinity);
- Assert.Throws(() => target.Maximum = double.NaN);
- Assert.Throws(() => target.Maximum = double.PositiveInfinity);
- Assert.Throws(() => target.Maximum = double.NegativeInfinity);
- Assert.Throws(() => target.Value = double.NaN);
- Assert.Throws(() => target.Value = double.PositiveInfinity);
- Assert.Throws(() => target.Value = double.NegativeInfinity);
- }
-
[Theory]
[InlineData(true)]
[InlineData(false)]