2013-02-21 2 views
5

Предположим, у меня есть номер 1234567.89. Номер отображается в текстовом блоке WPF. Я пытаюсь применить StringFormat атрибут к Text собственности, с тем, что число будет отображаться как:Изменение разделителя по умолчанию и десятичного разделителя в привязке

1.234.567,89 

Как вы можете видеть, тысячи и десятичные разделители перевернутых из инвариантной спецификации культуры.

Я попытался установить множество комбинаций для StringFormat, но безуспешно. Это последнее, что я придумал:

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

Но результат неправильный. Кроме того, использование N2 или изменение культуры не является вариантом. Я хотел бы избегать конвертеров, если это возможно.

Итак, есть ли способ изменить разделители по умолчанию через XAML?

ответ

8

Вам не обязательно изменить культура. Просто используйте String.Format с указанной культуры (де-DE должно быть хорошо):

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

Выход: 9.164,32

Если вы хотите сделать это в XAML, вы можете попробовать:

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

Я думаю, он пытается сделать все, что есть в XAML, и я не вижу, как это можно сделать, не используя некоторые C# на месте, по крайней мере, в форме пользовательского конвертера. – Woodman

+0

Комбинация 'StringFormat = N2, ConverterCulture = de' создаст желаемый результат без какого-либо дополнительного кода. – Clemens

+0

@Clemens спасибо за комментарий. Я не могу проверить код, это было мое предложение –

Смежные вопросы