Номер отрицательной валюты XAML
У меня есть небольшая проблема с текущим форматом моего отрицательного номера валюты.
Вот скриншот, возобновляющий мою ситуацию.
- Вот как я использую StringFormat в моей привязке. (BTW, я пробовал только {0: C})
- Как и ожидалось
- Текущие настройки моего компьютера для отрицательного номера валюты
4.
- Результат при запуске моего приложения
![alt text]()
Почему результат не равен -0,08 $?
Любые идеи о том, как я должен действовать?
Спасибо за ваше время.
UPDATE:
Я попытался решить проблему с помощью конвертера, вот результат:
- Я обнаружил, что
Thread.CurrentThread.CurrentUICulture
не совпадает с Thread.CurrentThread.CurrentCulture
, поэтому я исправил его в своем App.xaml.cs. К сожалению, тот же результат.
- Я попытался отобразить мои значения через конвертер, чтобы проверить, могу ли я отладить проблему. Дело в том, что культура, полученная в параметрах метода
Convert
, была в порядке, но ее CurrentNegativePattern
была не такой, как в Thread.CurrentThread.CurrentCulture
. Вероятно, это причина, по которой у меня есть эта проблема. на данный момент я буду использовать это: return ((double)value).ToString("C2", Thread.CurrentThread.CurrentCulture);
в методе Convert
моего конвертера.
Ответы
Ответ 1
Попробуйте изменить CurrentCulture
на CurrentUICulture
:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag))
);
Обратите внимание, что это может не использовать ваши региональные настройки. Объект CultureInfo
описывает ваши региональные настройки, но то, что вы делаете с IetfLanguageTag
, извлекает это для определенной культуры. В этой культуре нет настроек, которые вы внесли в свои региональные настройки.
В качестве альтернативы вы можете посмотреть опцию ConvertCulture
привязки. Это действительно занимает CultureInfo
.
Ответ 2
Взгляните на это
http://msdn.microsoft.com/en-us/library/ms745650.aspx
http://msdn.microsoft.com/en-us/library/ms788718.aspx