public object Convert(object value, Type targetType, object parameter, string language) { SupportedWeight expectedUnits = SupportedWeight.Kilogram; if (parameter is SupportedWeight supportedWeight) { expectedUnits = supportedWeight; } else if (parameter is string str) { if (Enum.TryParse <SupportedWeight>(str, out SupportedWeight supported)) { expectedUnits = supported; } } if (value is double weight) { if (!double.IsNaN(weight)) { return($"{weight} {shortHandNames[(int)expectedUnits]}"); } else { return($"{weight}"); } } return(value); //throw new NotImplementedException(); }
public static double ConvertWeight(double measurement, SupportedWeight supported, ConvertToWeight convertTo) { double result = double.NaN; if (!double.IsNaN(measurement)) { switch (supported) { case SupportedWeight.Gram: switch (convertTo) { case ConvertToWeight.Grams: result = measurement; break; case ConvertToWeight.Millgrams: result = measurement * 1000; break; case ConvertToWeight.Kilograms: result = measurement * 1e-3; break; default: System.Diagnostics.Debug.WriteLine($"{supported} is not supported."); break; } break; case SupportedWeight.Kilogram: switch (convertTo) { case ConvertToWeight.Grams: result = measurement * 1000; break; case ConvertToWeight.Millgrams: result = measurement * 1e6; break; case ConvertToWeight.Kilograms: result = measurement; break; default: System.Diagnostics.Debug.WriteLine($"{supported} is not supported."); break; } break; case SupportedWeight.Ounce: switch (convertTo) { case ConvertToWeight.Grams: result = measurement * Constants.OunceToGram; break; case ConvertToWeight.Millgrams: result = measurement * Constants.OunceToGram * 1000; break; case ConvertToWeight.Kilograms: result = measurement * Constants.OunceToGram / 1000; break; default: System.Diagnostics.Debug.WriteLine($"{supported} is not supported."); break; } break; case SupportedWeight.Pound: switch (convertTo) { case ConvertToWeight.Grams: result = measurement * Constants.PoundToGram; break; case ConvertToWeight.Millgrams: result = measurement * Constants.PoundToGram * 1000; break; case ConvertToWeight.Kilograms: result = measurement * Constants.PoundToKg; break; default: System.Diagnostics.Debug.WriteLine($"{supported} is not supported."); break; } break; default: break; } return(result); } return(measurement); }