diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/TextCaseConverter_Tests.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/TextCaseConverter_Tests.cs index d338adf62..815e2daab 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/TextCaseConverter_Tests.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/TextCaseConverter_Tests.cs @@ -14,9 +14,12 @@ public class TextCaseConverter_Tests [InlineData(test, TextCaseType.Lower, test)] [InlineData(test, TextCaseType.Upper, "TEST")] [InlineData(test, TextCaseType.None, test)] + [InlineData(test, TextCaseType.FirstUpperRestLower, "Test")] [InlineData(t, TextCaseType.Upper, "T")] [InlineData(t, TextCaseType.Lower, t)] [InlineData(t, TextCaseType.None, t)] + [InlineData(t, TextCaseType.FirstUpperRestLower, "T")] + [InlineData("", TextCaseType.FirstUpperRestLower, "")] [InlineData(null, null, null)] public void TextCaseConverter(object value, object comparedValue, object expectedResult) { diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs index c30915fa8..96dc13769 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs @@ -37,6 +37,9 @@ object Convert(string value, object parameter) { TextCaseType.Lower => value?.ToLowerInvariant(), TextCaseType.Upper => value?.ToUpperInvariant(), + TextCaseType.FirstUpperRestLower => !string.IsNullOrWhiteSpace(value) + ? value.Substring(0, 1).ToUpperInvariant() + value.Substring(1).ToLowerInvariant() + : value, _ => value }; @@ -55,4 +58,4 @@ TextCaseType GetParameter(object parameter) _ => TextCaseType.None, }; } -} \ No newline at end of file +} diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseType.shared.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseType.shared.cs index a33dd3242..65c0322fb 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseType.shared.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseType.shared.cs @@ -8,5 +8,6 @@ public enum TextCaseType None, Upper, Lower, + FirstUpperRestLower, } } \ No newline at end of file