diff --git a/src/Avalonia.Controls/GridLength.cs b/src/Avalonia.Controls/GridLength.cs index d7022b80ce..0e2f8e7d0c 100644 --- a/src/Avalonia.Controls/GridLength.cs +++ b/src/Avalonia.Controls/GridLength.cs @@ -180,7 +180,7 @@ namespace Avalonia.Controls return "Auto"; } - string s = _value.ToString(); + string s = _value.ToString(CultureInfo.InvariantCulture); return IsStar ? s + "*" : s; } diff --git a/tests/Avalonia.Controls.UnitTests/GridLengthTests.cs b/tests/Avalonia.Controls.UnitTests/GridLengthTests.cs index 8c00726e05..aab282a54f 100644 --- a/tests/Avalonia.Controls.UnitTests/GridLengthTests.cs +++ b/tests/Avalonia.Controls.UnitTests/GridLengthTests.cs @@ -1,6 +1,8 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Threading.Tasks; using Xunit; namespace Avalonia.Controls.UnitTests @@ -100,5 +102,23 @@ namespace Avalonia.Controls.UnitTests }, result); } + + [Theory] + [InlineData(1.2d, GridUnitType.Pixel, "1.2")] + [InlineData(1.2d, GridUnitType.Star, "1.2*")] + [InlineData(1.2d, GridUnitType.Auto, "Auto")] + public async void ToString_AllCulture_Should_Pass(double d, GridUnitType type, string result) + { + List cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures).ToList(); + GridLength length = new GridLength(d, type); + foreach(var culture in cultureInfos) + { + await Task.Run(() => + { + CultureInfo.CurrentCulture = culture; + Assert.Equal(result, length.ToString()); + }); + } + } } }