Question

I'm using scientific notation in XAML. I do:

<TextBox Text="{Binding Path=CELULARIDAD_CFU, StringFormat='e6'}"/>

The problem is that for 1710000 is showing: 1.710000e+006, which is correct but I would like to see 1.71e+6. How is this specified in XAML? (Not in code)

Was it helpful?

Solution 2

I didn't found exactly what I want so I decided to use an IValueConverter. Example:

Public Class scientificNotation6
    Implements IValueConverter

    Const EXP As Double = 1000000
    Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        Return CDbl(value) / EXP 'whatever you want
    End Function

    Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Return CDbl(value) * EXP 'whatever you want
    End Function
End Class

And then in the XAML page:

<TextBox Text="{Binding Path=CELULARIDAD_CONGELADO, Converter={StaticResource scientificNotation6}"/>

I hope it helps.

OTHER TIPS

I believe you should use the G format specifier to get (almost) what you want.

<TextBox Text="{Binding Path=CELULARIDAD_CFU, StringFormat='G'}"/>

Within a certain range (different for different number types, see link) the number will then be displayed in normal notation. For large or small enough values, the values will be displayed without trailing zeroes and 2 exponent digits.

Examples for float:

1340000  => 1340000
13400000 => 1.34e+07
0.00054  => 0.00054
0.000054 => 5.4e-05
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top