using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; namespace Tango.DispenserAnalyzer.UI.Converters { public class ObjectToDoubleConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is double)) return null; return (double)value; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if(value is string) { return GetDouble((string)value, 0.0); } return (double)value; } public double GetDouble(string value, double defaultValue) { double result; // Try parsing in the current culture if (!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture, out result) && // Then try in US english !double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out result) && // Then in neutral language !double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out result)) { result = defaultValue; } return result; } } }