Si ligo Text
en un TextBox
a una propiedad flotante, el texto mostrado no respeta el decimal del sistema (punto o coma). En cambio, siempre muestra un punto ('.'). Pero si visualizo el valor en MessageBox
(usando ToString()), se usa el decimal del sistema correcto.TextBox no respeta el decimal del sistema (punto o coma)
Xaml
<StackPanel>
<TextBox Name="floatTextBox"
Text="{Binding FloatValue}"
Width="75"
Height="23"
HorizontalAlignment="Left"/>
<Button Name="displayValueButton"
Content="Display value"
Width="75"
Height="23"
HorizontalAlignment="Left"
Click="displayValueButton_Click"/>
</StackPanel>
Código detrás
public MainWindow()
{
InitializeComponent();
FloatValue = 1.234f;
this.DataContext = this;
}
public float FloatValue
{
get;
set;
}
private void displayValueButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(FloatValue.ToString());
}
A partir de ahora, he resuelto esto con un convertidor que sustituye a punto con el sistema decimal (que funciona) pero, ¿por qué es necesario? ¿Es esto por diseño y hay una manera más fácil de resolver esto?
SystemDecimalConverter (en caso de que alguien más tiene el mismo problema)
public class SystemDecimalConverter : IValueConverter
{
private char m_systemDecimal = '#';
public SystemDecimalConverter()
{
m_systemDecimal = GetSystemDecimal();
}
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString().Replace('.', m_systemDecimal);
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString().Replace(m_systemDecimal, '.');
}
public static char GetSystemDecimal()
{
return string.Format("{0}", 1.1f)[1];
}
}
+1, esto es genial! ¡Gracias! No tengo tiempo para revisar los enlaces que me proporcionó en este momento, pero los revisaré tan pronto como tenga tiempo. Así que esperaré un par de horas antes de aceptar tu respuesta para ver si alguien más se le ocurre algo. Buen trabajo –