using System; using System.Globalization; using System.Windows.Data; namespace CtrEditor.Converters { public class RegionalFloatConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is float floatValue) { // Usar la cultura actual para mostrar el nĂºmero con el separador decimal correcto return floatValue.ToString("N4", CultureInfo.CurrentCulture); } return value?.ToString() ?? string.Empty; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value is string stringValue) { // Intentar parsing con la cultura actual primero if (float.TryParse(stringValue, NumberStyles.Float, CultureInfo.CurrentCulture, out float result)) { return result; } // Si falla, intentar con cultura invariante (punto como separador) if (float.TryParse(stringValue, NumberStyles.Float, CultureInfo.InvariantCulture, out result)) { return result; } // Si ambos fallan, intentar reemplazar punto por coma o viceversa string adjustedString = stringValue.Replace(',', '.').Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); if (float.TryParse(adjustedString, NumberStyles.Float, CultureInfo.CurrentCulture, out result)) { return result; } } return 0.0f; // Valor por defecto si no se puede parsear } } }