public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string number; // Return the text key only in design mode. Nothing better to do for now. if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) { if (decimals > -1) { number = Tx.Number(0, decimals); } else { number = Tx.Number(0); } } else { // values[0] is the Dummy binding, don't use it // Read the number value from binding number two. if (values[1] == DependencyProperty.UnsetValue) { return(DependencyProperty.UnsetValue); } else if (values[1] is byte || values[1] is sbyte || values[1] is ushort || values[1] is short || values[1] is uint || values[1] is int || values[1] is long) { long l = System.Convert.ToInt64(values[1]); number = Tx.Number(l); } else { decimal d = System.Convert.ToDecimal(values[1]); if (decimals > -1) { number = Tx.Number(d, decimals); } else { number = Tx.Number(d); } } } if (!string.IsNullOrEmpty(unit)) { number = Tx.NumberUnit(number, unit); } return(number); }