private bool TryParseText(string valueText, out double numericValue) { PhysicalValue physicalValueResult; if (DisplayUnit.HasValue) { if (!valueText.Contains(DisplayUnit.Value.ToString())) { valueText = valueText + " " + DisplayUnit.Value; } PhysicalValue.TryParse(valueText, DisplayUnit.Value, LastPrefix, out physicalValueResult); if (!double.IsNaN(physicalValueResult.Value)) { numericValue = physicalValueResult.ConvertTo(Unit).Value; } else { numericValue = Value; } } else { if (!PhysicalValue.TryParse(valueText, Unit, LastPrefix, out physicalValueResult)) { physicalValueResult.Value = Double.NaN; } numericValue = double.IsNaN(physicalValueResult.Value) ? Value : physicalValueResult.Value; } return(!double.IsNaN(physicalValueResult.Value)); }
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { PhysicalValue result; if (PhysicalValue.TryParse(value.ToString(), DefaultUnit, out result)) { return(result.Value); } else { return(double.NaN); } }