Convertidor de Moneda Xamarin Permitir Negativo
Tengo una clase convertidora de moneda para convertir la entrada de entrada a moneda. Sin embargo, me gustaría permitir valores negativos también.
<Entry Text="{Binding Price, Converter={StaticResource currencyConverter}}" Keyboard="Numeric" Placeholder="$0.00""/>
public class CurrencyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Decimal.Parse(value.ToString()).ToString("C");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string valueFromString = Regex.Replace(value.ToString(), @"\D", "");
if (valueFromString.Length <= 0)
return 0m;
long valueLong;
if (!long.TryParse(valueFromString, out valueLong))
return 0m;
if (valueLong <= 0)
return 0m;
return valueLong / 100m;
}
}
davy.ai
Para permitir valores negativos en la clase del convertidor de moneda, debes modificar el método
ConvertBack
. Actualmente, solo devuelve 0 si el valor de entrada está vacío o no se puede analizar, y devuelve el valor dividido por 100 en caso contrario.Para permitir valores negativos, puedes modificar el método
ConvertBack
de la siguiente manera:Esto convertirá la cadena de entrada en un valor long, luego lo dividirá por 100 y lo multiplicará por -1 si la entrada comienza con un signo negativo (“-“). De lo contrario, lo multiplicará por 1 (es decir, lo dejará positivo).
Con esta modificación, el convertidor ahora permitirá ingresar valores negativos en el campo de entrada.