using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Data; namespace Tango.Editors.Converters { internal class StringFormatConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { String stringValue = values[0].ToString(); String format = values[1] != null ? values[1].ToString() : null; var resultString = Regex.Match(stringValue, @"^-?[0-9]\d*(\.\d+)?$").Value; if (String.IsNullOrWhiteSpace(resultString)) return ""; if (resultString == "-") return resultString; return System.Convert.ToDouble(resultString).ToString(format != null ? format : ""); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { String resultString; if (value.ToString() == "-" || value.ToString() == ".") { resultString = value.ToString() + 0; } else { resultString = Regex.Match(value.ToString(), @"^-?[0-9]\d*(\.\d+)?$").Value; } return new object[] { System.Convert.ToDouble(String.IsNullOrWhiteSpace(resultString) ? "0" : resultString) }; } } }