Miloš Ranđelović
Miloš Ranđelović

Reputation: 444

Changing the default thousand and decimal separator in a binding

Let's say I have a number 1234567.89. The number is displayed in a WPF TextBlock. I am trying to apply StringFormat attribute to the Text property so that the number would be displayed like:

1.234.567,89

As you can see, the thousand and decimal separators are inverted from the invariant culture specification.

I've tried setting numerous combinations for the StringFormat, but without success. This is the latest I came up with:

Text="{Binding SomeBinding, StringFormat={}{0:#'.'##0','00}}"

But the output isn't correct. Also, using N2 or changing culture isn't an option. I would like to avoid converters if possible.

So, is there a way to change the default separators through XAML?

Upvotes: 8

Views: 12851

Answers (1)

Andrey Gordeev
Andrey Gordeev

Reputation: 32459

You don't have to change the culture. Just use String.Format with specified culture (de-DE should be fine):

string output = String.Format(new CultureInfo("de-DE"), "{0:N}", yourDoubleValue);

Output: 9.164,32

If you want to do it in XAML, you could try:

Text="{Binding SomeBinding, StringFormat={}{0:N}, ConverterCulture=de-DE}"

Upvotes: 13

Related Questions