using System; using System.Globalization; using System.Linq; using System.Windows.Data; namespace CordonelAssemblyLine.Converter { public class MathConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return double.Parse((string)value, CultureInfo.CurrentUICulture); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string format = ""; string strValue = (string)value; strValue = strValue.Replace("x", "*").Replace("X", "*"); if (strValue.ToUpper().Contains("E")) { return double.Parse(strValue, CultureInfo.InvariantCulture).ToString(format); //2E-07 } else if (strValue.Contains("^-") && strValue.Contains("*")) { var split = strValue.Split('*'); var mulit = double.Parse(split.First()); var powNumber = double.Parse(split.Last().Split('^').First()); var powBy = double.Parse(split.Last().Split('^').Last()); return (mulit * Math.Pow(powNumber, powBy)).ToString(format); //2*10^-3 } else if (strValue.Contains("-") && strValue.Contains("*")) { var split = strValue.Split('*'); var mulit = double.Parse(split.First()); var powNumber = double.Parse(split.Last().Split('-').First()); var powBy = double.Parse(split.Last().Split('-').Last()); powBy = powBy * -1; return (mulit * Math.Pow(powNumber, powBy)).ToString(format); } else if (strValue.Contains("0,0")) { return double.Parse(strValue, CultureInfo.CurrentUICulture).ToString(format); } return value; } } }