using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; namespace OwlCore.WinUI.Converters.Text { /// /// A converter that changes the casing of a string. /// public class CaseConverter : IValueConverter { /// /// Gets or sets the character casing to convert an input string to. /// public CharacterCasing Case { get; set; } /// /// Initializes a new instance of the class. /// public CaseConverter() { Case = CharacterCasing.Upper; } /// /// Converts a string to a certain character casing. /// /// The string to convert. /// The result's character casing. /// String in the specified character casing. [Pure] [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string Convert(string? value, CharacterCasing characterCasing) { if (value != null) { switch (characterCasing) { case CharacterCasing.Upper: return value.ToUpper(); case CharacterCasing.Lower: return value.ToLower(); case CharacterCasing.Normal: default: return value; } } return string.Empty; } /// public object Convert(object value, Type targetType, object parameter, string language) { var str = value as string; return Convert(str, Case); } /// public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } }