diff --git a/src/Controls/src/Core.Design/FontSizeDesignTypeConverter.cs b/src/Controls/src/Core.Design/FontSizeDesignTypeConverter.cs
index 3ae93210452b..3af2067a52ea 100644
--- a/src/Controls/src/Core.Design/FontSizeDesignTypeConverter.cs
+++ b/src/Controls/src/Core.Design/FontSizeDesignTypeConverter.cs
@@ -19,6 +19,16 @@ public FontSizeDesignTypeConverter()
protected override string[] KnownValues
=> new[] { "Default", "Micro", "Small", "Medium", "Large", "Body", "Header", "Title", "Subtitle", "Caption" };
+ ///
+ public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+ => false;
+
+ ///
+ // Standard values have been marked obsolete since .NET 9, so we don’t return them
+ // to prevent the IDE’s auto-complete from suggesting them.
+ public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
+ => new StandardValuesCollection(Array.Empty());
+
///
public override bool IsValid(ITypeDescriptorContext context, object value)
{
diff --git a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj
index 0ccc6d1f39ac..eea378f61455 100644
--- a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj
+++ b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj
@@ -19,6 +19,7 @@
+
diff --git a/src/Controls/tests/Core.Design.UnitTests/FontSizeDesignTypeConverterTests.cs b/src/Controls/tests/Core.Design.UnitTests/FontSizeDesignTypeConverterTests.cs
new file mode 100644
index 000000000000..89b40750decd
--- /dev/null
+++ b/src/Controls/tests/Core.Design.UnitTests/FontSizeDesignTypeConverterTests.cs
@@ -0,0 +1,74 @@
+using Microsoft.Maui.Controls.Design;
+using Xunit;
+
+namespace Microsoft.Maui.Controls.Core.UnitTests
+{
+ public class FontSizeDesignTypeConverterTests
+ {
+ [Fact]
+ public void FontSizeDesignTypeConverter_StandardValuesNotSupported()
+ {
+ FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
+ Assert.True(converter.CanConvertFrom(typeof(string)));
+
+ // Standard values should not be supported to prevent IDE autocomplete
+ // from suggesting obsolete named font size values
+ bool actual = converter.GetStandardValuesSupported();
+ Assert.False(actual);
+ }
+
+ [Fact]
+ public void FontSizeDesignTypeConverter_StandardValuesEmpty()
+ {
+ FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
+
+ // GetStandardValues should return an empty collection
+ var values = converter.GetStandardValues();
+ Assert.Empty(values);
+ }
+
+ [Theory]
+ [InlineData("Default")]
+ [InlineData("Micro")]
+ [InlineData("Small")]
+ [InlineData("Medium")]
+ [InlineData("Large")]
+ [InlineData("Body")]
+ [InlineData("Header")]
+ [InlineData("Title")]
+ [InlineData("Subtitle")]
+ [InlineData("Caption")]
+ public void FontSizeDesignTypeConverter_NamedValuesStillValid(string value)
+ {
+ // Named values are obsolete but should still be valid for backward compatibility
+ FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
+ bool actual = converter.IsValid(value);
+ Assert.True(actual);
+ }
+
+ [Theory]
+ [InlineData("12")]
+ [InlineData("0")]
+ [InlineData("100")]
+ public void FontSizeDesignTypeConverter_NumericValuesValid(string value)
+ {
+ FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
+ bool actual = converter.IsValid(value);
+ Assert.True(actual);
+ }
+
+ [Theory]
+ [InlineData(null)]
+ [InlineData("")]
+ [InlineData(" ")]
+ [InlineData("foo")]
+ [InlineData("extra large")]
+ [InlineData("12px")]
+ public void FontSizeDesignTypeConverter_InvalidValues(string value)
+ {
+ FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
+ bool actual = converter.IsValid(value);
+ Assert.False(actual);
+ }
+ }
+}